Перейти к основному содержимому

Правило CSS !important

Наивысший приоритет свойству CSS придаёт правило !important.

Для этого свойства у данного элемента все предыдущие правила стилизации уступают ему.

Ключевое слово пишется последним в объявлении CSS, прямо перед точкой с запятой.

Синтаксис

styles.css
selector {
  property: value !important;
}

Пример правила !important в CSS

Встроенный стиль, селектор id и селектор класса ниже имеют более высокую специфичность, чем обычное правило для абзаца, и всё же все три абзаца получают жёлтый фон. Для этого свойства у этих элементов !important побеждает любое другое правило стилизации.

Пример

Вот как правило ведёт себя на практике:

Prompt
Покажите три абзаца с разными CSS-селекторами (inline-стиль, класс и id), все из которых задают background-color. Используйте общий селектор p с background-color: yellow !important, чтобы переопределить их все, демонстрируя, что !important побеждает inline-стили, селекторы классов и селекторы id.
Результат: полная HTML-страница "}, {

Используйте !important экономно

Правило !important уступает только другому правилу !important, размещённому в объявлении с такой же (или более высокой) специфичностью в исходном коде.

Код, написанный таким образом, становится запутанным и трудным для отладки, а большая таблица стилей только усугубляет это.

Пример

Здесь трудно сказать, какой из этих цветов считается самым важным:

Prompt
Покажите три абзаца, стилизованных селектором p, селектором id #myid и селектором класса .myclass, все с использованием !important для background-color (красный, синий, серый). Продемонстрируйте, что при конфликте нескольких правил !important победителя определяет обычная специфичность.
Результат: полная HTML-страница "}, {

Несколько уместных случаев использования !important

И всё же есть несколько случаев, когда правило !important полезно:

1. Переопределение стиля, который нельзя переопределить иным способом. Одна из таких ситуаций — система управления контентом (CMS), код CSS которой вы не можете редактировать: ваши собственные стили могут использовать это правило, чтобы победить некоторые стили CMS.

2. Учёт предпочтений пользователя. Люди с чувствительностью к движению могут предпочитать сайты с меньшим количеством анимации. Функция prefers-reduced-motion в @media сообщает вам, попросил ли кто-то уменьшить движение, например анимации или переходы. Если человек включил эту настройку на своём компьютере, !important может отключить или ослабить эти эффекты.

3. Закрепление очень специфичного стиля для одного вида элементов. Предположим, все кнопки-ссылки на странице должны иметь одинаковый особый вид. Если поместить такую кнопку внутрь другого элемента с более высокой специфичностью, свойства могут вступить в конфликт, поэтому добавление !important к свойствам кнопки принудительно придаёт всем им один и тот же вид.

Медиазапросам посвящена отдельная глава далее в курсе.

Пример с уменьшением движения

Prompt
Продемонстрируйте правило @media (prefers-reduced-motion: reduce), которое использует !important, чтобы отключить все анимации и переходы для пользователей, предпочитающих уменьшенное движение. Включите простой анимированный элемент, чтобы эффект был заметен.
Результат: полная HTML-страница "}, {

Базовая кнопка-ссылка

Сначала кнопки-ссылки: серый цвет фона, белый текст, а также отступы и рамка:

Prompt
Создайте стилизованную кнопку-ссылку с помощью селектора a.button с серым фоном (#8c8c8c), белым текстом, отступом 5px, рамкой 1px solid black и без оформления текста.
Результат: полная HTML-страница "}, {

Конфликт кнопки-ссылки

Поместите кнопку-ссылку в элемент с более высокой специфичностью, и её свойства могут вступить в конфликт:

Prompt
Покажите кнопку-ссылку, стилизованную с помощью a.button (серый фон, белый текст, отступ 5px, рамка 1px solid black, без оформления текста), размещённую внутри div с id "myDiv". Добавьте правило #myDiv a, устанавливающее цвет в красный, а цвет фона в жёлтый, демонстрируя конфликт специфичности.
Результат: полная HTML-страница "}, {

Кнопка-ссылка с !important

Если отметить свойства кнопки с помощью !important, все кнопки будут выглядеть одинаково, что бы их ни окружало:

Prompt
Покажите кнопку-ссылку, стилизованную с помощью a.button с использованием !important для всех свойств (серый фон #8c8c8c, белый текст, отступ 5px, рамка 1px solid black, без оформления текста), размещённую внутри div с id "myDiv". Добавьте правило #myDiv a с красным цветом и жёлтым фоном, чтобы показать, что стили кнопки с !important побеждают.
Результат: полная HTML-страница "}, {