หมายความว่าอะไรสำคัญใน CSS?


409

อะไร!importantหมายถึงใน CSS?

มันมีอยู่ใน CSS 2 หรือไม่? CSS 3

สนับสนุนอยู่ที่ไหน เบราว์เซอร์ที่ทันสมัยทั้งหมดหรือไม่



17
... สิ่งที่ต้องหลีกเลี่ยงเมื่อทำได้
สกอตต์

คำตอบ:


400

มันแปลว่าอะไรเป็นหลัก ว่า 'สิ่งนี้สำคัญไม่สนใจกฎที่ตามมาและปัญหาเฉพาะเจาะจงตามปกติให้ใช้กฎนี้ !'

ในการใช้งานตามปกติกฎที่กำหนดไว้ในสไตล์ชีทภายนอกจะถูกแทนที่ด้วยสไตล์ที่กำหนดไว้ในheadเอกสารซึ่งในทางกลับกันจะถูกแทนที่ด้วยสไตล์อินไลน์ภายในองค์ประกอบของตัวเอง การกำหนดกฎด้วย!important'แอตทริบิวต์' (?) จะยกเลิกข้อกังวลตามปกติโดยคำนึงถึงกฎ 'ภายหลัง' ที่แทนที่กฎ 'ก่อนหน้า'

โดยปกติแล้วกฎที่เจาะจงยิ่งกว่านั้นจะแทนที่กฎที่เจาะจงน้อยลง ดังนั้น:

a {
    /* css */
}

โดยปกติจะถูกแทนที่โดย:

body div #elementID ul li a {
    /* css */
}

เนื่องจากตัวเลือกหลังนั้นมีความเฉพาะเจาะจงมากกว่า (และไม่ปกติโดยทั่วไปไม่ว่าจะพบตัวเลือกที่เฉพาะเจาะจงมากขึ้น (ในheadหรือสไตล์ชีตภายนอก) จะยังคงแทนที่ตัวเลือกที่เฉพาะเจาะจงน้อยลง (แอตทริบิวต์ของสไตล์ในบรรทัดจะเสมอแทนที่ตัวเลือก 'more-' หรือตัวเลือก 'less-' เนื่องจากจะมีความเฉพาะเจาะจงมากกว่า

อย่างไรก็ตามหากคุณเพิ่มลง!importantในการประกาศ CSS ของตัวเลือกที่ไม่เจาะจงก็จะมีความสำคัญ

การใช้!importantมีจุดประสงค์ (แม้ว่าฉันจะพยายามคิดถึงพวกมัน) แต่มันก็เหมือนกับการใช้ระเบิดนิวเคลียร์เพื่อหยุดสุนัขจิ้งจอกฆ่าไก่ของคุณ ใช่สุนัขจิ้งจอกจะถูกฆ่า แต่ไก่ก็เช่นกัน และบริเวณใกล้เคียง

นอกจากนี้ยังทำให้การดีบัก CSS ของคุณเป็นฝันร้าย (จากส่วนตัวประสบการณ์เชิงประจักษ์)


253
มันยังสร้างความสับสนให้กับนักพัฒนาหลายคนเช่นเดียวกับในภาษาการเขียนโปรแกรมหลาย ๆ คำนำหน้า! หมายถึงไม่ได้
rustyx

19
จุดประสงค์หนึ่งสำหรับ! สำคัญจะอยู่ในสคริปต์ GreaseMonkey ที่คุณตั้งใจจะเอาชนะ CSS ของคนอื่นที่มีความเฉพาะเจาะจงมากกว่าของคุณ
Noumenon

1
W3 อย่างเป็นทางการเรียกมันว่า "กฎ"
JD Smith

5
อย่างน้อยก็ไม่ประชดประชันและบอกว่าimportant!(สำคัญไม่ได้)
user3553260

2
คุณเขียนว่า: 'ในการใช้งานปกติกฎที่กำหนดไว้ในสไตล์ชีทภายนอกจะถูกแทนที่ด้วยสไตล์ที่กำหนดไว้ในส่วนหัวของเอกสาร' มันผิด.
jlguenego

130

กฎ!! สำคัญเป็นวิธีที่จะทำให้ CSS ของคุณเรียงซ้อน แต่ยังมีกฎที่คุณรู้สึกว่าสำคัญที่สุดจะถูกนำไปใช้เสมอ กฎที่มีคุณสมบัติ!! สำคัญจะถูกนำไปใช้เสมอไม่ว่าจะมีกฎนั้นปรากฏในเอกสาร CSS ที่ใดก็ตาม

ดังนั้นหากคุณมีสิ่งต่อไปนี้:

.class {
   color:red !important;
}
.outerClass .class {
   color:blue;
}

กฎที่มีความสำคัญจะถูกนำไปใช้ (ไม่นับเฉพาะ )

ฉันเชื่อว่า!importantปรากฏใน CSS1 ดังนั้นเบราว์เซอร์ทุกตัวรองรับ (IE4 ถึง IE6 ที่มีการนำไปใช้บางส่วน, IE7 + เต็ม)

นอกจากนี้ยังเป็นสิ่งที่คุณไม่ต้องการใช้บ่อยเพราะถ้าคุณทำงานกับคนอื่นคุณสามารถแทนที่คุณสมบัติอื่น ๆ ได้


1
จริง ๆ แล้ว IE4 + มีข้อผิดพลาดจนถึงและรวม 6
BoltClock

15
ความสับสนเกิดขึ้นเนื่องจาก!เป็นสัญลักษณ์สำหรับบางภาษา แต่มันชัดเจนขึ้นในขณะนี้
Si8

2
!importantฉันดีใจโดยเฉพาะอย่างยิ่งที่คุณรวมไวยากรณ์สำหรับการใช้ CSS แตกต่างจากภาษาอื่น ๆ ซึ่งง่ายต่อการลืมวิธีการใช้บางสิ่ง
blainarmstrong

3
@ Si8 - ใช่เพราะความสับสนที่ฉันคิดเสมอ "พวกเขา" ควรจะมีการกำหนดไว้ว่ามันเป็นimportant!หรืออาจจะมากกว่าIMPORTANT! !importantฉันสงสัยว่าใคร (ที่อาจอ่านนี้) รู้ว่าทำไมพวกเขากำหนดด้วยเครื่องหมายวรรคตอนที่ด้านหน้า? เห็นได้ชัดว่ามันเปลี่ยนสายเกินไปแล้ว
Kevin Fegan

22

!important เป็นส่วนหนึ่งของ CSS1

เบราว์เซอร์ที่รองรับ: IE5.5 +, Firefox 1+, Safari 3+, Chrome 1+

มันหมายถึงบางสิ่งเช่น:

ใช้ฉันถ้าไม่มีอะไรสำคัญรอบตัว!

ไม่สามารถพูดได้ดีกว่า


5
!importantไม่ จำกัด เฉพาะ Safari 3+ เท่านั้น มันรองรับตั้งแต่เริ่มแรกเหมือนกับเบราว์เซอร์ที่ไม่ใช่ IE อื่น ๆ ทั้งหมด IE เข้าใจตั้งแต่เวอร์ชัน 4 ขึ้นไป แต่รองรับเฉพาะบั๊กที่ไม่มีข้อผิดพลาดเริ่มจากเวอร์ชั่น 7
BoltClock

12

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

นี่คือลำดับความสำคัญจากต่ำสุดไปสูงสุด:

  1. สไตล์ของเบราว์เซอร์
  2. การประกาศสไตล์ชีทผู้ใช้ (ไม่สำคัญ!)
  3. การประกาศสไตล์ชีทผู้แต่ง (ไม่สำคัญ!)
  4. สไตล์ชีตผู้เขียนสำคัญ!
  5. สไตล์ชีตผู้ใช้ที่สำคัญ!

หลังจากนั้นความจำเพาะเกิดขึ้นสำหรับกฎที่ยังมีนิ้วอยู่ในวงกลม

อ้างอิง:


ดังที่ @ fabian-barney ชี้ให้เห็นว่า!importantเป็นตัวแก้ไขสำหรับผู้พัฒนาลำดับการเรียงซ้อน. mozilla.org/en-US/docs/Web/CSS/Cascade (ดูตารางสำหรับการอ้างอิง)
Doomjunky

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