Весной стартует сезон найма, успей отхватить свой оффер!

Специфичность селектора в CSS

Специфичность селектора в CSS определяет, какой стиль будет применён, если несколько селекторов подходят к одному элементу. Чем выше специфичность, тем выше приоритет у стиля.

Формула специфичности

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

  1. !important переопределяет все обычные стили (отдельно от механизма специфичности)
  2. Inline-стили (встроенные стили, например, style="color: red;") имеют самый высокий приоритет.
  3. Идентификаторы (ID) дают вес в 100 очков за каждый.
  4. Классы, атрибуты и псевдоклассы добавляют 10 очков за каждый.
  5. Теги и псевдоэлементы добавляют 1 очко за каждый.

Пример специфичности

СелекторСпецифичностьОбъяснение
*0, 0, 0Универсальный селектор, минимальный вес.
p0, 0, 1Один тег (1 очко).
.class0, 1, 0Один класс (10 очков).
#id1, 0, 0Один идентификатор (100 очков).
div.class0, 1, 1Один тег (1) и один класс (10).
#id .class p1, 1, 1Один ID (100), один класс (10), один тег (1).
style="color: red;"Inline-стильМаксимальная специфичность.

Как работает специфичность

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


Пример

<div id="example" class="box">
  Пример текста
</div>
/* Стили */

div { color: black; }          /* 0, 0, 1 */
.box { color: blue; }          /* 0, 1, 0 */
#example { color: red; }       /* 1, 0, 0 */

/* Итоговый стиль: цвет текста будет красным (#example). */

Совет:

Избегайте чрезмерного использования ID-селекторов. Это делает код менее гибким и усложняет переопределение стилей.