ตัวเลือกทั้งสองนี้แตกต่างกันอย่างไร
.classA.classB {
border: 1px solid;
}
.classA .classB {
border: 1px solid;
}
ตัวเลือกทั้งสองนี้แตกต่างกันอย่างไร
.classA.classB {
border: 1px solid;
}
.classA .classB {
border: 1px solid;
}
คำตอบ:
.classA.classB
หมายถึงองค์ประกอบที่มีทั้งคลาส A และ B ( class="classA classB"
); ขณะที่.classA .classB
หมายถึงองค์ประกอบที่มีเชื้อสายมาจากองค์ประกอบที่มีclass="classB"
class="classA"
แก้ไข: ข้อมูลจำเพาะสำหรับการอ้างอิง: Attribute Selectors (ดูหัวข้อ 5.8.3 Class Selectors)
รูปแบบเช่นนี้พบได้บ่อยกว่ามากและจะกำหนดเป้าหมายองค์ประกอบประเภทใด ๆ ของคลาส "classB" ที่ซ้อนอยู่ภายในองค์ประกอบประเภทใดก็ได้ของคลาส "classA"
.classA .classB {
border: 1px solid; }
มันจะใช้งานได้ตัวอย่างเช่นเมื่อ:
<div class="classA">
<p class="classB">asdf</p>
</div>
อย่างไรก็ตามอันนี้กำหนดเป้าหมายองค์ประกอบทุกประเภทที่มีทั้งคลาส "classA" และคลาส "classB" รูปแบบนี้พบเห็นได้น้อย แต่ก็ยังมีประโยชน์ในบางสถานการณ์
.classA.classB {
border: 1px solid; }
สิ่งนี้จะใช้กับตัวอย่างนี้:
<p class="classA classB">asdf</p>
อย่างไรก็ตามจะไม่มีผลต่อสิ่งต่อไปนี้:
<p class="classA">fail</p>
<p class="classB">fail</p>
(โปรดทราบว่าเมื่อองค์ประกอบ HTML มีหลายคลาสพวกเขาจะถูกคั่นด้วยช่องว่าง)
.classA.classB
หมายความว่าองค์ประกอบที่มีชื่อคลาสทั้งสองจะถูกเลือกในขณะ.classA .classB
ที่องค์ประกอบที่มีชื่อคลาสclassB
ภายในclassA
จะถูกเลือกเท่านั้น