มันไม่ได้เป็นไปได้กับ CSS2.1 แต่มันก็เป็นไปได้ด้วย CSS3 แอตทริบิวต์เตอร์ substring จับคู่ (ซึ่งได้รับการสนับสนุนใน IE7 +):
div[class^="status-"], div[class*=" status-"]
สังเกตเห็นอักขระช่องว่างในตัวเลือกแอตทริบิวต์ที่สอง สิ่งนี้จะเลือกdiv
องค์ประกอบที่มีclass
คุณสมบัติตรงตามเงื่อนไขข้อใดข้อหนึ่งต่อไปนี้:
[class^="status-"]
- เริ่มต้นด้วย "status-"
[class*=" status-"]
- มีสตริงย่อย "status-" ที่เกิดขึ้นโดยตรงหลังช่องว่างอักขระ ชื่อคลาสจะถูกคั่นด้วยช่องว่างต่อข้อมูลจำเพาะ HTMLดังนั้นอักขระช่องว่างที่สำคัญ สิ่งนี้จะตรวจสอบคลาสอื่น ๆ หลังจากครั้งแรกถ้ามีการระบุคลาสหลายคลาสและเพิ่มโบนัสของการตรวจสอบคลาสแรกในกรณีที่ค่าของแอททริบิวนั้นมีช่องว่าง (ซึ่งอาจเกิดขึ้นกับแอพพลิเคชั่นบางclass
ตัว
ธรรมชาตินี้ยังทำงานใน jQuery ที่แสดงให้เห็นที่นี่
เหตุผลที่คุณต้องรวมตัวเลือกแอททริบิวต์สองตัวตามที่อธิบายไว้ข้างต้นเป็นเพราะตัวเลือกแอททริบิวเช่น[class*="status-"]
จะตรงกับองค์ประกอบต่อไปนี้ซึ่งอาจไม่เป็นที่ต้องการ:
<div id='D' class='foo-class foo-status-bar bar-class'></div>
หากคุณสามารถมั่นใจได้ว่าสถานการณ์ดังกล่าวจะไม่เกิดขึ้นคุณมีอิสระที่จะใช้ตัวเลือกดังกล่าวเพื่อความเรียบง่าย อย่างไรก็ตามชุดค่าผสมข้างต้นมีความแข็งแกร่งกว่ามาก
หากคุณมีการควบคุมมากกว่า HTML ที่หรือแอพลิเคชันที่สร้างมาร์กอัปมันอาจจะง่ายเพียงแค่ทำให้status-
คำนำหน้าของตัวเองstatus
ระดับแทนที่จะเป็นกระเจี๊ยบแสดงให้เห็น
status-
และคุณไม่ต้องการให้ตรงกับที่เลือกตัวเลือกจะกลายเป็นความซับซ้อนมากขึ้น:div[class^="status-"]:not(.status-), div[class*=" status-"]:not(.status-)
ถ้าคุณสูญเสียการสนับสนุน IE7 / IE8 โชคดีถ้ามาร์กอัปของคุณมีสติคุณไม่จำเป็นต้องยกเว้นคลาสดังกล่าว