ЛУЧШИЙ САЙТ ДЛЯ ВЕБ-РАЗРАБОТЧИКОВ

CSS Учебник

CSS СТАРТ CSS Введение CSS Синтаксис CSS Селекторы CSS Как подключить CSS Комментарии CSS Цвета CSS Фоны CSS Границы CSS Margin CSS Padding CSS Height/Width CSS Блочная модель CSS Контур CSS Текст CSS Шрифты CSS Иконки CSS Ссылки CSS Списки CSS Таблицы CSS Display CSS Max-Width CSS Position CSS Overflow CSS Float CSS Inline-Block CSS Выравнивание CSS Комбинаторы CSS Псевдо-классы CSS Псевдо-элементы CSS Opacity CSS Панель навигации CSS Выпадающие списки CSS Галерея изображений CSS Спрайты изображений CSS Селекторы атрибутов CSS Формы CSS Счётчики CSS Макет веб-сайта CSS Единицы CSS Специфичности CSS !important

CSS Продвинутый

CSS Закругленные углы CSS Границы изображений CSS Фоны CSS Цвета CSS Ключевые слова цвета CSS Градиенты CSS Тени CSS Эффекты текста CSS Веб-шрифты CSS 2D Трансформации CSS 3D Трансформации CSS Переходы CSS Анимации CSS Подсказки CSS Стили изображений CSS Отражение изображения CSS object-fit CSS object-position CSS Кнопки CSS Нумерация страниц CSS Несколько столбцов CSS Пользовательский интерфейс CSS Переменные CSS Размеры блоков CSS Медиа-запросы CSS Примеры медиа-запросов CSS Flexbox

CSS Адаптивный

RWD Введение RWD Область просмотра RWD Вид сетки RWD Медиа-запросы RWD Изображения RWD Видео RWD Фреймворки RWD Шаблоны

CSS Grid (Сетка)

Grid Введение Grid Контейнер Grid Элементы

CSS Примеры

CSS Шаблоны CSS Примеры CSS Викторина CSS Упражнения CSS Сертификат

CSS Справочники

CSS Справочник CSS Селекторы CSS Функции CSS Справочник аудио CSS Безопасные веб-шрифты CSS Анимация CSS Единицы CSS PX-EM Конвертер CSS Цвета CSS Значения цвета CSS Значения по умолчанию CSS Поддержка браузерами

CSS. Уроки для для начинающих

CSS Специфичность


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

Определение

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

Если есть два или более конфликтующих правила CSS, указывающих на один и тот же элемент, браузер следует некоторым правилам, чтобы определить, какое из них наиболее конкретное, и поэтому побеждает.

Специфичность можно рассматривать как оценку/рейтинг, определяющий, какие объявления стиля в конечном итоге применяются к элементу.

Универсальный селектор (*) имеет низкую специфичность, в то время как селекторы ID очень специфичны!

Примечание: Специфичность - это частая причина, по которой ваши правила CSS не применяются к некоторым элементам, хотя вы думаете, что они должны применяться.


Иерархия специфичности

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

Встроенные стили - Встроенный стиль прикрепляется непосредственно к стилизованному элементу. Пример: <h1 style="color: #fff;">.

IDs - ID - это уникальный идентификатор для элементов страницы, например #navbar.

Классы, атрибуты и псевдоклассы - В эту категорию входят .classes, [attributes] и псевдоклассы, такие как: hover, :focus и т.д.

Элементы и псевдоэлементы - В эту категорию входят имена элементов и псевдоэлементы, такие как h1, div, :before и :after.


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

Запомните, как рассчитывать специфичность!

Начните с 0, добавьте 1000 для атрибута стиля, добавьте 100 для каждого идентификатора, добавьте 10 для каждого атрибута, класса или псевдокласса, добавьте 1 для каждого имени элемента или псевдоэлемента.

Рассмотрим эти три фрагмента кода:

Пример

A: h1
B: #content h1
C: <div id="content"><h1 style="color: #ffffff">Heading</h1></div>

Специфичность A равна 1 (один элемент)
Специфичность B равна 101 (одна ссылка ID и один элемент)
Специфичность C составляет 1000 (встроенный стиль)

Поскольку 1 < 101 < 1000 третье правило (C) имеет более высокий уровень специфичности и поэтому будет применяться.


Правила специфичности

Равная специфичность: учитывается последнее правило - если одно и то же правило дважды записано во внешнюю таблицу стилей, то нижнее правило в таблице стилей ближе к элементу, который нужно стилизовать, и поэтому будет применяться:

Пример

h1 {background-color: yellow;}
h1 {background-color: red;}

Попробуйте сами »

Последнее правило применяется всегда.


Селекторы идентификаторов имеют более высокую специфичность, чем селекторы атрибутов. Обратите внимание на следующие три строки кода:

Пример

div#a {background-color: green;}
#a {background-color: yellow;}
div[id=a] {background-color: blue;}

Попробуйте сами »

Первое правило более конкретное, чем два других, и будет применяться.


Контекстные селекторы более специфичны, чем селектор одного элемента - встроенная таблица стилей ближе к элементу, который нужно стилизовать. Как в следующей ситуации:

Пример

Из внешнего CSS файла:
#content h1 {background-color: red;}

В HTML файле:
<style>
#content h1 {
  background-color: yellow;
}
</style>

Последнее правило будет применяться.


Селектор класса превосходит любое количество селекторов элементов - селектор класса, такой как .intro, превосходит h1, p, div и т.д.:

Пример

.intro {background-color: yellow;}
h1 {background-color: red;}

Попробуйте сами »


Универсальный селектор и унаследованные значения имеют специфичность 0 - *, body * и подобные имеют нулевую специфичность. Унаследованные значения также имеют специфичность 0.