Специфичность css селекторов — как определить какие стили применяться к элементу?

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

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

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

  1. Селектор по идентификатору имеет самый высокий приоритет – 100.
  2. Классы, селекторы по атрибуту и с псевдоклассом имеют приоритет – 010.
  3. Селекторы по тегу и псевдоклассу :hover имеют приоритет – 001.
  4. Дочерние или родственные селекторы (комбинаторы)  +, >, ~ , универсальный селектор * и псевдокласс :where() веса не имеют.
  5. Псевдоклассы :is(), :has(), :not() принимают вес селектора объявленного внутри.
  6. Для псевдоклассов :nth-child(), :nth-last-child(), :host() и :host-context() специфичность — это комбинация самого псевдокласса (0,1,0) и наиболее специфичного из селекторов в них.
  7. Для псевдоэлемента ::slotted() специфичность представляет собой комбинацию самого псевдоэлемента (0,0,1) и специфичности селектора внутри него.
  8. Если два селектора имеют одинаковый вес, то применяется тот который находится ниже по каскаду.

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

Исключения

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

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

https://html-css.blog/css/speczifichnost-css-selektorov/

Оставьте первый комментарий

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*


3 + 6 =