Калькулятор Специфичности CSS Онлайн. Визуализатор Веса Селектора

Вычислите специфичность и точный вес любого CSS селектора. Визуальный инструмент для понимания того, какое правило CSS выигрывает каскад, и избегайте использования !important.

VS
Этот селектор выигрывает!
0 ID
0 Классы / Псевдо-классы
0 Элементы
Этот селектор выигрывает!
0 ID
0 Классы / Псевдо-классы
0 Элементы
Оба селектора имеют одинаковый вес. Если они конкурируют за один элемент, побеждает селектор, написанный последним в CSS.
Студия утилит

Хотите эту утилиту на своём сайте?

Настройте цвета и тёмную тему для WordPress, Notion или вашего сайта.

Часто задаваемые вопросы

Что такое специфичность CSS?

Специфичность — это алгоритм, который браузеры используют для определения того, какое правило CSS применяется к элементу, когда несколько правил конкурируют. Она представлена трёхколонным счётом (A, B, C), указывающим идентификаторы, классы/атрибуты/псевдо-классы и элементы/псевдо-элементы соответственно.

Может ли класс когда-либо победить ID в специфичности?

Нет, прямо не может. ID (1,0,0) всегда побеждает любое количество классов (0,N,0), потому что специфичность не имеет переноса между колонками. Сто классов (0,100,0) никогда не победят один ID (1,0,0).

Что происходит, когда два селектора имеют одинаковую специфичность?

Когда два селектора имеют одинаковый вес, побеждает тот, который объявлен последним в CSS файле. Это называется естественным порядком каскада. Этот калькулятор визуально предупреждает вас, когда происходит ничья.

Почему использование !important считается плохой практикой?

Директива !important нарушает естественный CSS каскад, форсируя объявление над любым другим правилом. Это создаёт конфликты, которые трудно отследить в больших проектах. Методология BEM рекомендует сохранять специфичность плоской, чтобы никогда не требовалось !important.

# Что такое специфичность CSS?

Специфичность CSS — это алгоритм, по которому браузеры определяют, какие значения свойств применять к конкретному элементу. По сути это математический счёт, который говорит браузеру «насколько специфичным» является правило.Если два правила имеют разные уровни специфичности, правило с большим весом побеждает, независимо от порядка их написания. Если оба имеют одинаковый вес, побеждает последнее объявленное в исходном коде.

# Как вычислить специфичность CSS

Специфичность вычисляется на основе трёх категорий, образующих трёхколонный вес, часто выражаемый как (A, B, C):
  • Колонка A (ID): Подсчитывает количество уникальных идентификаторов. Пример: #header считается как 1 в колонке A.
  • Колонка B (Классы, атрибуты и псевдо-классы): Подсчитывает все классы (.button), атрибуты ([type="text"]) и псевдо-классы (:hover).
  • Колонка C (Элементы и псевдо-элементы): Подсчитывает все HTML элементы (div, h1) и псевдо-элементы (::before).

# Золотое правило: Нет переноса между колонками

Правило со специфичностью (0,50,0) никогда не будет более специфичным, чем правило (1,0,0). Один ID побеждает бесчисленное количество классов. Колонки никогда не переполняются друг в друга.

# Проблема с !important и архитектурой BEM

Директива !important является исключением из правил специфичности. При использовании это объявление автоматически переопределяет любое другое. Это считается плохой практикой, потому что разрушает естественный каскад.Чтобы избежать войн специфичности в крупных проектах, методология BEM рекомендует использовать только селекторы классов с одинаковой глубиной, искусственно сохраняя специфичность плоской на уровне (0,1,0).

Библиографические ссылки