Когда использовать !important в CSS: наглядные примеры

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

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

CSS
Скопировать код
.button {
    background-color: blue !important; /* Переопределяет все остальные правила применительно к синему цвету */
}
Кинга Идем в IT: пошаговый план для смены профессии

Что необходимо знать о !important?

Не забывайте: !important — это действительно крайняя мера, к которой следует прибегать только после того, как вы попытались использовать все другие варианты. Прежде чем применять его, попытайтесь усилить специфичность ваших селекторов, чтобы избежать ненужности его использования.

CSS
Скопировать код
#content .button { /* Более специфичный селектор помогает обойтись без !important */
    background-color: blue; 
}

Ситуации, в которых без !important не обойтись

Существуют случаи, когда без !important просто не обойтись. Например, если требуется переопределить стили, автоматически добавляемые JavaScript, !important вполне может помочь. Также он может пригодиться при работе с элементами, которые не подлежат изменению, например, в системах вроде SharePoint. В подобных ситуациях он временно разрешит проблемы стилей до тех пор, пока не будет осуществлён более всеобъемлющий апдейт.

CSS
Скопировать код
/* !important как заслон против инлайновых стилей, создаваемых JavaScript */
.button {
    display: block !important; 
}

Код-ревью и !important как "тесные места"

Повсеместное использование !important в коде может свидетельствовать о необходимости рефакторинга CSS. Постарайтесь создавать модульный, масштабируемый код, соблюдая такие методологии как BEM, OOCSS либо SMACSS. Это позволит сократить использование !important до минимума и упростит поддержку кода.

CSS
Скопировать код
/* 🕵️ Вот он, !important. Возможно, настал момент для рефакторинга... */

Визуализация

Вообразите условную иерархию приоритетов правил CSS:

Светофор 🚦Правило CSSПриоритет
Зелёный светСтандартное правилоНизкий 🟢
Жёлтый светСпецифичный селекторСредний 🟡
Красный светПравило с !importantВысокий 🔴

Правила с !important схожи с сигналом красного света — они доминируют над остальными стилями, подобно тому как красный свет останавливает движение.

Markdown
Скопировать код
До применения `!important`: 🟢 Пользовательские стили -> 🟡 Встроенный CSS -> 🟢 Инлайновые стили
После `!important`: 🔴 СТОП! `!important` забирает приоритет!

!important необходимо применять так же редко, как красный свет на светофоре, чтобы не сорвать баланс стилей.

Влияние !important на поддержку кода

Каждое применение !important требует обоснования и должно сопровождаться комментариями, объясняющими его необходимость. Такой подход позволит сохранить простоту поддержке кода в будущем и облегчит дальнейшую работу другим разработчикам, понимание причин такого решения.

CSS
Скопировать код
.button {
    display: block !important; /* Применено ввиду конфликтов со скриптом jQuery */
}

В поисках альтернатив

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

CSS
Скопировать код
/* Переосмысление структуры вместо брутальной обработкой с помощью !important */
.common-button.special-condition {
    background-color: blue; 
}

При невозможности контролировать внешние скрипты

Если вам приходится работать со внешними виджетами и при этом контроль над HTML-структурой ограничен, !important может оказаться необходимым. Помните, что эту меру следует применять только после исчерпывающих попыток.

CSS
Скопировать код
/* Когда плагины противятся, !important заставляет их уступить */
.plugin-widget {
    display: none !important; /* Экрана ты не достоишь! */
}

Полезные материалы

  1. Специфичность – CSS: Cascading Style Sheets | MDNОсновное руководство по специфичности в CSS, основа для существования !important.
  2. Когда использование !important является правильным выбором | CSS-Tricks — Анализ правомерных ситуаций для применения !important.
  3. CSS !important свойство – W3Schools — Хорошая точка старта для новичков, чтобы усвоить принцип работы !important.
  4. Что означает !important в CSS? – Stack OverflowФорум для обсуждения достоинств и недостатков применения !important.
  5. Medium — Вероятно, поможет осознать значение !important, хотя и не предоставляет исчерпывающей информации для полной ясности.