Що означає! Важливе значення у CSS?


409

Що !importantозначає CSS?

Чи він доступний у CSS 2? CSS 3?

Де це підтримується? Усі сучасні браузери?



17
... чого слід уникати, коли це можливо.
Скотт

Відповіді:


400

Це означає, по суті, те, що він говорить; що "це важливо, ігноруйте наступні правила та будь-які звичні проблеми, застосовуйте це правило!"

У звичайному використанні правило, визначене у зовнішній таблиці стилів, перекривається стилем, визначеним у headдокументі, який, у свою чергу, перекручується стилістичним стилем у самому елементі (передбачаючи рівну специфіку селекторів). Визначення правила з !important"атрибутом" (?) Відкидає звичайні занепокоєння щодо "пізнішого" правила, що перекриває "попередні".

Крім того, як правило, більш конкретне правило буде замінено менш конкретне правило. Тому:

a {
    /* css */
}

Зазвичай перераховується:

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

Оскільки останній селектор є більш конкретним (і він, як правило, не має значення, де знаходиться більш конкретний селектор (у headабо зовнішньому аркуші стилів), він все одно перекриє менш специфічний селектор (атрибути стильового стилю завжди будуть) перевизначте селектор "більше" або "менш", оскільки він завжди більш конкретний.

Якщо, однак, ви додасте !importantдо CSS-декларації менш конкретного селектора, воно матиме пріоритет.

Використання !importantмає свої цілі (хоча я намагаюся їх думати), але це дуже схоже на використання ядерного вибуху, щоб зупинити лисиць, які вбивають ваших курчат; так, лисиці будуть вбиті, але так будуть і кури. І сусідство.

Це також робить налагодження вашого CSS кошмаром (з особистого, емпіричного, досвіду).


253
Це також бентежить для багатьох розробників, як у багатьох мовах програмування префікс! значить ні .
rustyx

19
Однією з цілей! Важливим буде сценарій GreaseMonkey, де ви навмисно перекриваєте CSS інших людей, який, ймовірно, більш конкретний, ніж ваш.
Номенон

1
Офіційно W3 називає це "правилом".
Дж. Сміт

5
принаймні це не саркастично і каже important!(важливо НЕ)
user3553260

2
Ви писали: "У звичайному використанні правило, визначене у зовнішній таблиці стилів, перекручується стилем, визначеним у заголовку документа". Це неправильно.
jlguenego

130

Важливе правило - це спосіб зробити ваш CSS-каскад, але також мати правила, які, на ваш погляд, є найважливішими завжди. Правило, яке має важливе властивість!, Завжди буде застосовуватися незалежно від того, де це правило відображається в документі CSS.

Отже, якщо у вас є наступне:

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

правило з важливим буде застосованим (не рахуючи конкретності )

Я вважаю, що !importantз'явився в CSS1, тому кожен браузер підтримує його (IE4 до IE6 з частковою реалізацією, IE7 + повна)

Крім того, це не те, що ви не хочете використовувати досить часто, тому що якщо ви працюєте з іншими людьми, ви можете змінювати інші властивості.


1
IE4 +, насправді, з помилками, до 6, включаючи 6.
BoltClock

15
Плутанина відбувається як !символ символу НЕ в деяких мовах, але зараз зрозуміліше.
Si8

2
Я особливо радий, що ви включили синтаксис для використання !important. CSS досить відрізняється від інших мов, що легко забути, як користуватися певними речами.
blainarmstrong

3
@ Si8 - Так, через цю плутанину я завжди вважав, що "вони" повинні були визначити це як important!, а може IMPORTANT!, і не !important. Цікаво, чи хтось (хто може це прочитати) знає, чому вони визначили це з пунктуацією напроти? Очевидно, що зараз занадто пізно змінити це.
Кевін Феган

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.