จะสร้างกฎ css สำหรับองค์ประกอบทั้งหมดยกเว้นคลาสเดียวได้อย่างไร


100

ฉันได้สร้าง CSS สไตล์ชีตสำหรับโครงการของฉันแล้ว มีวิธีใดบ้างที่ฉันสามารถสร้างกฎ css ที่ใช้กับองค์ประกอบตารางทั้งหมดยกเว้นองค์ประกอบตารางที่เป็นของคลาส "dojoxGrid" สิ่งที่ต้องการ:

.not(dojoxGrid) table{
    width:100%;
    border-top:1px solid #dddddd;
    border-left:1px solid #dddddd;
    border-right:1px solid #dddddd;
    margin:1em auto;
    border-collapse:collapse;
}

คุณต้องการสิ่งนี้เพื่อทำงานข้ามเบราว์เซอร์หรือไม่? เบราว์เซอร์มีการสนับสนุนที่แตกต่างกันสำหรับตัวเลือก CSS ที่ยืดหยุ่นกว่า อาจเป็นสิ่งที่คุณสามารถทำได้ในสคริปต์หากจำเป็นจริงๆและจำเป็นต้องข้ามเบราว์เซอร์
kibibu

ใช่ฉันต้องการให้มันทำงานบนเบราว์เซอร์หลัก ๆ มีวิธีอื่นที่ฉันสามารถทำได้มากกว่าการเขียนสคริปต์หรือไม่? ไชโย
นิค

แนวทางของ Cori จะใช้ได้กับเบราว์เซอร์ไปจนถึง ie4 ซึ่งอาจจะก่อนหน้านี้
kibibu

คำตอบ:


194

การปฏิเสธชั้นหลอกดูเหมือนจะเป็นสิ่งที่คุณกำลังมองหา

table:not(.dojoxGrid) {color:red;}

มันไม่ได้รับการสนับสนุนโดย≤ IE8 แม้ว่า


2
นั่นเป็นตัวเลือก css3 ที่ดีที่ควรระวัง - หวังว่าจะสามารถใช้งานได้ใน IE9
cori

4
ในขณะที่ความคิดเห็นของฉันไม่สามารถใช้ได้โดยตรงกับคำถาม แต่ก็ควรสังเกตว่า:notสามารถใช้เป็นตัวเลือก jquery ได้ นั่น$("[data-name='bob']:not(a)")คือสิ่งที่ดี
Gingerbreadboy

3
นี่ควรเป็นคำตอบที่ยอมรับได้เนื่องจากเป็นคำตอบของเอฟเฟกต์ที่ต้องการ คำตอบที่ยอมรับในปัจจุบันเป็นอีกทางเลือกหนึ่งในการบรรลุผลตามที่ต้องการ แต่ไม่ได้ตอบคำถามจริงๆ ผู้ที่พบคำถามนี้มักจะมองหาคำตอบสำหรับสิ่งที่ถามกันตรงๆในกรณีส่วนใหญ่จะไม่มีทางเลือกอื่น
Pedro Moreira

color:redใน≤IE8นี้จะถูกบังคับให้ละเว้นสมบูรณ์ตารางไม่มีที่จะได้รับ สิ่งนี้อาจดีสำหรับบางคน แต่สำหรับฉันฉันหวังว่ามันจะอ่านเหมือนtable {color:red;}และเพิกเฉยต่อไฟล์:not().
DutGRIFF

7
@FranciscoCorralesMorales :not(.classOne):not(.classTwo)cf stackoverflow.com/a/5684168/248058
Knu

12

จะไม่ตั้งค่ากฎ css สำหรับตารางทั้งหมดจากนั้นจะตั้งค่าตามมาสำหรับตารางที่ class = "dojoxGrid" ทำงานได้หรือไม่ หรือฉันขาดอะไรไป?


3
ใช่ว่าจะได้ผลอย่างแน่นอน แต่คุณจะตั้งค่าคุณสมบัติเหล่านั้นทั้งหมดเป็นค่า หากคุณต้องการปล่อยให้ "ไม่ได้ตั้งค่า" ก็ไม่ สันนิษฐานว่านิคพยายามที่จะไม่ปิดบังค่าของ dojoxGrid ตามที่ตั้งไว้ที่อื่น
kibibu

1
ฉันคิดว่ามันจะ อย่างไรก็ตามฉันกำลังตั้งค่าคุณสมบัติมากมายสำหรับตารางทั้งหมดฉันสามารถเขียนทับอีกครั้งด้วยค่าเริ่มต้นที่จำเป็นสำหรับ dojoxGrid อย่างไรก็ตามฉันไม่แน่ใจว่าค่าดีฟอลต์เหล่านี้คืออะไรเนื่องจากถูกสร้างขึ้นโดยไลบรารี dojo ดังนั้นฉันจึงมองหาวิธีอื่นที่จะบรรลุมัน
นิค

4

การเดิมพันที่ปลอดภัยที่สุดคือการสร้างคลาสบนโต๊ะเหล่านั้นและใช้สิ่งนั้น ปัจจุบันการใช้งานสิ่งนี้ในเบราว์เซอร์หลักทั้งหมดไม่น่าเป็นไปได้

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