Skip to main content

Як розраховується специфічність? Як виглядає формула специфічності?

Специфічність обчислюється як числова «вага» селектора, що складається з чотирьох розрядів. Браузер формує число за формулою:

javascript
[a, b, c, d]

Де:

РозрядЩо враховуєтьсяПриклади
ainline-стиліstyle=""
bID-селектори#header
cкласи, атрибути, псевдокласи.box, [type="text"], :hover
dселектори тегів і псевдоелементиdiv, p, ::after

Як рахується

Селектор розбирається на частини, і кожна частина збільшує один з розрядів.

Наприклад:

СелекторСпецифічність
div0,0,0,1
.text0,0,1,0
#main0,1,0,0
header .menu li0,0,1,2 (1 клас + 2 теги)
#main .menu li0,1,1,1
style="color:red"1,0,0,0

Як порівнюються

Порівняння відбувається розряд за розрядом зліва направо:

  1. спочатку порівнюється a (inline)
  2. якщо рівні, b (id)
  3. якщо рівні, c (класи)
  4. якщо рівні, d (теги)

Застосовується те правило, у якого більше число в першому розряді, що відрізняється.


Важливі винятки

  • !important не бере участі у формулі, але перебиває все, крім іншого !important
  • * (універсальний селектор) не додає ваги
  • комбінатори (>, +, ~, пробіл) також не впливають на вагу

Підсумок формули

Специфічність = [a, b, c, d], де:

  • a: inline
  • b: ID
  • c: класи, атрибути, псевдокласи
  • d: теги і псевдоелементи

Ця формула визначає, яке правило переможе при конфлікті стилів.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.