Что значит! Важное в CSS?

Возможный дубликат:
Каковы последствия использования "! Important" в CSS?
Как вы читаете! Важно в CSS?

Что значит !important значит в CSS?

Это доступно в CSS 2? CSS 3?

Где это поддерживается? Все современные браузеры?

5 ответов

По сути, это означает, что это говорит; что "это важно, игнорируйте последующие правила и любые обычные проблемы специфичности, применяйте это правило!"

При обычном использовании правило, определенное во внешней таблице стилей, отменяется стилем, определенным в head документа, который, в свою очередь, отменяется встроенным стилем внутри самого элемента (при условии равной специфичности селекторов). Определение правила с помощью !important "Атрибут" (?) отбрасывает обычные проблемы, связанные с правилом "позже", перекрывающим "более ранние".

Кроме того, обычно более конкретное правило переопределяет менее конкретное правило. Так:

a {
    /* css */
}

Обычно отменяется:

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

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

Если, однако, вы добавляете !important для декларации CSS менее специфичного селектора, он будет иметь приоритет.

С помощью !important имеет свои цели (хотя мне трудно думать о них), но это похоже на использование ядерного взрыва, чтобы остановить лис, убивающих ваших цыплят; да, лисы будут убиты, но и куры тоже. И окрестности.

Это также делает отладку вашего CSS кошмаром (из личного, эмпирического, опыта).

Правило! Важное - это способ сделать ваш CSS каскадным, но также есть правила, которые вы считаете наиболее важными, всегда применяемыми. Правило, которое имеет свойство! Important, всегда будет применяться независимо от того, где это правило появляется в документе CSS.

Итак, если у вас есть следующее:

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

применяется правило с важным (не считая специфики)

я верю !important появился в CSS1, поэтому его поддерживает каждый браузер (IE4 - IE6 с частичной реализацией, IE7+ full)

Кроме того, это то, что вы не хотите использовать довольно часто, потому что, если вы работаете с другими людьми, вы можете переопределить другие свойства.

!important является частью CSS1.

Браузеры, поддерживающие его: IE5.5+, Firefox 1+, Safari 3+, Chrome 1+.

Это означает, что-то вроде:

Используйте меня, если вокруг нет ничего более важного!

Не могу сказать, что лучше.

Он используется для влияния на сортировку в каскаде CSS, когда сортировка по происхождению выполнена. Это не имеет ничего общего со спецификой, как указано здесь в других ответах.

Вот приоритет от низшего к высшему:

  1. стили браузера
  2. объявления таблицы стилей пользователя (без! важный)
  3. объявления таблицы стилей автора (без! важный)
  4. ! важные авторские таблицы стилей
  5. ! важные пользовательские таблицы стилей

После этого имеет место специфика для правил, все еще имеющих палец в пироге.

Рекомендации:

Это изменяет правила переопределения приоритета каскадов CSS. Смотрите спецификацию CSS2.

Другие вопросы по тегам