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

Или как определить какие стили применяться к элементу?

Специфичность селекторов определяет какие именно стили применить к элементу, если на него влияют сразу несколько css правил с разными селекторами. У какого правила это значение выше, то и применится для элемента. По-простому специфичность можно назвать “вес”, “приоритет” или “важность”.

Приоритет селекторов

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

  1. Селектор по идентификатору имеет самый высокий приоритет – 100.
  2. Классы, селекторы по атрибуту и с псевдоклассом имеют приоритет – 010.
  3. Селекторы по тегу и псевдоклассу :hover имеют приоритет – 001.
  4. Универсальный селектор *, комбинаторы +, >, ~ и псевдокласс :where() веса не имеют.
  5. Псевдоклассы :is(), :has(), :not() принимают вес селектора объявленного внутри.
  6. Если два селектора имеют одинаковый вес, то применяется тот который находится ниже по каскаду.

Наглядно протестировать специфичность селекторов можно в – онлайн калькуляторе специфичности.

Исключения

Самыми приоритетными являются стили в атрибуте style=”” у элемента, они перебивают любые другие стили любого веса.

Исключением является модификатор !important он игнорирует все правила и устанавливает выделенное свойство для элемента.