เลือกองค์ประกอบตามหลายคลาส


360

ฉันมีกฎสไตล์ฉันต้องการใช้กับแท็กเมื่อมีสองคลาส มีวิธีการดำเนินการนี้โดยไม่ใช้ JavaScript? ในคำอื่น ๆ :

<li class='left ui-class-selector'>

ฉันต้องการที่จะใช้กฎสไตล์ของฉันเท่านั้นถ้าliมีทั้ง.leftและ.ui-class-selectorเรียนนำไปใช้


คำตอบ:


595

คุณหมายถึงสองชั้น? "เชน" ตัวเลือก (ไม่มีช่องว่างระหว่างตัวเลือก):

.class1.class2 {
    /* style here */
}

เลือกนี้องค์ประกอบทั้งหมดที่มีว่ายังมีclass1class2

ในกรณีของคุณ:

li.left.ui-class-selector {

}

เอกสารอย่างเป็นทางการ: เตอร์ระดับ CSS2


เมื่อakamikeชี้ให้เห็นปัญหาเกี่ยวกับวิธีการนี้ใน Internet Explorer 6 คุณอาจต้องการอ่านสิ่งนี้: ใช้คลาสสองชั้นใน IE6 CSS หรือไม่


6
โปรดทราบว่า IE6 ไม่ชอบสิ่งเหล่านี้เนื่องจากไม่ได้อ่านสายโซ่ของคลาส มันจะดูที่ชั้นสุดท้ายในห่วงโซ่
akamike

16
มันไม่ใช่ :) เว็บไซต์สำคัญ ๆ ทุกแห่งได้ถูกทิ้งกำลังจะลดลงหรือกำลังวางแผนที่จะลดการสนับสนุนในอนาคตอันใกล้สำหรับ IE6 .. ทำเช่นเดียวกัน!
โทมัส Bonini

@ Andreas Bonini: ใช่ฉันรู้ บอกตามตรงฉันไม่สนใจ IE6 มานานแล้ว (ฉันลบความคิดเห็นก่อนหน้าของฉันเพราะฉันพบคำถามอื่น ๆ ที่เกี่ยวข้องกับปัญหานี้.)
เฟลิกซ์แพรว

ใช่คุณไม่สามารถใช้พวกมันเลยใน IE6 เพียงใช้เส้นทางที่ยาวขึ้นเพื่อจัดองค์ประกอบของคุณ ตัวอย่างเช่นการกำหนดสไตล์ให้แต่ละชั้นแยกจากกันและใช้ CSS เฉพาะที่เหมาะสมเพื่อแทนที่ให้ดีที่สุดเท่าที่จะทำได้
akamike

2
ฉันจำได้ว่าชอบเต้นรำบนหลุมฝังศพของ IE6 ฉันไม่เคยต้องสนับสนุน IE10 ในปีนี้และการลดลงของ IE ทั้งหมดอยู่บนขอบฟ้า ฉันรักอนาคต ☺
Michael Scheper

22

ตัวเลือกลูกโซ่ไม่ได้ จำกัด เฉพาะคลาสเท่านั้นคุณสามารถทำได้ทั้งคลาสและรหัส

การเรียนการสอน

.classA.classB {
/*style here*/
}

คลาสและรหัส

.classA#idB {
/*style here*/
}

ฉันทำ

#idA#idB {
/*style here*/
}

เบราว์เซอร์ที่ดีในปัจจุบันทั้งหมดรองรับสิ่งนี้ยกเว้น IE 6 โดยเลือกจากตัวเลือกสุดท้ายในรายการ ดังนั้น ".classA.classB" จะเลือกตามเพียงแค่ ".classB"

สำหรับกรณีของคุณ

li.left.ui-class-selector {
/*style here*/
}

หรือ

.left.ui-class-selector {
/*style here*/
}

9
Id & Id เป็นตัวเลือกที่มีแนวคิดแปลก ๆ
Félix Gagnon-Grenier

0

คุณสามารถใช้วิธีแก้ไขปัญหาเหล่านี้:

กฎ CSS ใช้กับแท็กทั้งหมดที่มีสองคลาสต่อไปนี้:

.left.ui-class-selector {
    /*style here*/
}

กฎ CSS ใช้กับแท็กทั้งหมดที่มี<li>สองคลาสต่อไปนี้:

li.left.ui-class-selector {
   /*style here*/
}

โซลูชั่น jQuery:

$("li.left.ui-class-selector").css("color", "red");

โซลูชัน Javascript:

document.querySelector("li.left.ui-class-selector").style.color = "red";
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.