ตัวเลือก CSS นี้คืออะไร? [ระดับ * =“ช่วง”]


190

ฉันเห็นตัวเลือกนี้ใน Twitter Bootstrap:

.show-grid [class*="span"] {
    background-color: #eee;
    text-align: center;
    border-radius: 3px;
    min-height: 30px;
    line-height: 30px;
}

ไม่มีใครรู้ว่าสิ่งที่เรียกว่าเทคนิคนี้และมันทำอะไร?



1
มีตัวเลือก CSS ที่ยอดเยี่ยมให้เลือกมากมาย: w3.org/TR/selectors/#selectors
Tim Medora


คล้ายกัน แต่ไม่ซ้ำกันทั้งหมดstackoverflow.com/questions/7366323/ … (ซึ่งลิงก์กลับมาที่นี่)
BoltClock

คำตอบ:


332

มันเป็นตัวเลือกสัญลักษณ์ตัวแทนของคุณลักษณะ ในตัวอย่างที่คุณได้รับจะมองหาองค์ประกอบลูกใด ๆ ภายใต้ที่มีชั้นเรียนที่มี.show-gridspan

ดังนั้นจะเลือก<strong>องค์ประกอบในตัวอย่างนี้:

<div class="show-grid">
    <strong class="span6">Blah blah</strong>
</div>

นอกจากนี้คุณยังสามารถค้นหา 'เริ่มต้นด้วย ... '

div[class^="something"] { }

ซึ่งจะทำงานกับสิ่งนี้: -

<div class="something-else-class"></div>

และ 'ลงท้ายด้วย ... '

div[class$="something"] { }

ซึ่งจะทำงานใน

<div class="you-are-something"></div>

อ้างอิงที่ดี


1
ฉันรู้ว่านี่เป็นคำตอบที่เก่า แต่ฉันจะเพิ่มการอ้างอิงนี้ไปยังรายการอ้างอิง: w3.org/TR/css3-selectors
เด็กกลัว

2
ต้องการเพิ่มการอ้างอิงอื่นในกรณีที่ผู้คนพบว่ามีประโยชน์: AllCssSelectors.com
user3339411

6
div[class^="something"] { }"เริ่มต้นด้วยการ" เลือกทำงานเฉพาะถ้าองค์ประกอบหนึ่งมีชั้นเดียวหรือถ้าหลายเมื่อเรียนว่าเป็นคนแรกที่ด้านซ้าย
Nahn

2
ฉันจะเพิ่มdiv[class~="something"]สำหรับการค้นหาที่ตรงกันในพื้นที่แยกรายการ (เช่นชั้นเรียน) และdiv[class|="something"สำหรับการจับคู่ในยัติภังค์คั่นรายการบางสิ่งบางอย่างเช่นการจับคู่ในคุณมีบางสิ่งบางอย่าง ClassName เหนือ
รัสกิน

31
.show-grid [class*="span"]

มันเป็นตัวเลือก CSS ที่เลือกองค์ประกอบทั้งหมดที่มีระดับการแสดงตารางที่มีองค์ประกอบของเด็กที่เป็นระดับมีชื่อช่วง


15
ที่จริงแล้วมันจะเลือก "องค์ประกอบลูกที่มีคลาสของช่วงชื่อ" และไม่ "องค์ประกอบทั้งหมดที่มีตารางแสดงชั้น"
Utopik

3

ต่อไปนี้:

.show-grid [class*="span"] {

หมายความว่าองค์ประกอบลูกทั้งหมดของ '.show-grid' พร้อมคลาสที่มีคำว่า 'span' อยู่ในนั้นจะได้รับคุณสมบัติ CSS เหล่านั้น

<div class="show-grid">
  <div class="span">.span</div>
  <div class="span6">span6</div>
  <div class="attention-span">attention</div>
  <div class="spanish">spanish</div>
  <div class="mariospan">mariospan</div>
  <div class="espanol">espanol</div>

  <div>
    <div class="span">.span</div>
  </div>

  <p class="span">span</p>
  <span class="span">I do GET HIT</span>

  <span>I DO NOT GET HIT since I need a class of 'span'</span>
</div>

<div class="span">I DO NOT GET HIT since I'm outside of .show-grid</span>

องค์ประกอบทั้งหมดได้รับผลกระทบยกเว้น<span>ตัวมันเอง


เกี่ยวกับ Bootstrap:

  • span6: นี่เป็นเทคนิคการนั่งร้านของ Bootstrap 2 ซึ่งแบ่งส่วนออกเป็นกริดแนวนอนตามส่วนที่ 12 ดังนั้นspan6จะมีความกว้าง 50%
  • ในการปรับใช้ Bootstrap ในวันปัจจุบัน (v.3 และ v.4) ตอนนี้คุณใช้.col-*คลาส (เช่นcol-sm-6) ซึ่งระบุจุดพักสื่อเพื่อจัดการการตอบสนองเมื่อหน้าต่างย่อขนาดต่ำกว่าขนาดที่กำหนด ตรวจสอบBootstrap 4.1และBootstrap 3.3.7สำหรับเอกสารเพิ่มเติม ฉันอยากจะแนะนำให้ไปกับ Bootstrap ภายหลังทุกวันนี้

2

มันเลือกองค์ประกอบทั้งหมดที่ชื่อชั้นเรียนมีสตริง"span"ที่ไหนสักแห่ง นอกจากนี้ยังมี^=สำหรับการเริ่มต้นของสตริงและ$=สำหรับจุดสิ้นสุดของสตริง นี่คือข้อมูลอ้างอิงที่ดีสำหรับตัวเลือก CSS บางตัว: http://net.tutsplus.com/tutorials/html-css-techniques/the-30-css-selectors-you-must-memorize/

ฉันก็แค่คุ้นเคยกับการเรียนการบูตspanXที่ X เป็นจำนวนเต็ม แต่ถ้ามีตัวเลือกอื่น ๆ ที่สิ้นสุดในspanก็ยังจะตกอยู่ภายใต้กฎระเบียบเหล่านี้

มันเพียงช่วยในการใช้กฎ CSS แบบครอบคลุม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.