Учебник по CSS

ГЛАВНАЯ CSS Введение в CSS Синтаксис CSS Селекторы CSS CSS как сделать CSS-комментарии Цвета CSS CSS-фоны CSS границы CSS поля CSS-заполнение CSS высота/ширина Блочная модель CSS Схема CSS CSS-текст CSS-шрифты CSS-иконки CSS-ссылки CSS-списки CSS-таблицы Отображение CSS Максимальная ширина CSS Позиция CSS CSS Z-индекс CSS переполнение Плавающая CSS Встроенный блок CSS Выравнивание CSS Комбинаторы CSS Псевдокласс CSS CSS-псевдоэлемент Непрозрачность CSS Панель навигации CSS Выпадающие списки CSS Галерея изображений CSS Спрайты изображений CSS Селекторы атрибутов CSS CSS-формы CSS-счетчики CSS макет веб-сайта Единицы CSS Специфика CSS CSS! важно Математические функции CSS

CSS расширенный

CSS закругленные углы Изображения границ CSS CSS-фоны Цвета CSS Цветовые ключевые слова CSS CSS-градиенты CSS-тени Текстовые эффекты CSS Веб-шрифты CSS 2D-преобразования CSS CSS 3D-преобразования CSS-переходы CSS-анимации Подсказки CSS Изображения в стиле CSS Отражение изображения CSS CSS объект-подгонка CSS-позиция объекта Маскировка CSS CSS-кнопки Разбивка на страницы CSS Несколько столбцов CSS Пользовательский интерфейс CSS CSS-переменные Размер блока CSS Медиа-запросы CSS Примеры CSS MQ CSS флексбокс

CSS Отзывчивый

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

CSS -сетка

Введение в сетку Контейнер сетки Элемент сетки

CSS SASS

Учебник по SASS

Примеры CSS

CSS-шаблоны Примеры CSS css викторина CSS-упражнения Сертификат CSS

Ссылки на CSS

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

Специфика CSS


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

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

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

Посмотрите на следующие примеры:

Пример 1

В этом примере мы использовали элемент «p» в качестве селектора и указали для этого элемента красный цвет. Текст будет красным:

<html>
<head>
  <style>
    p {color: red;}
  </style>
</head>
<body>

<p>Hello World!</p>

</body>
</html>

Теперь посмотрите на пример 2:

Пример 2

В этом примере мы добавили селектор класса (с именем «тест») и указали для этого класса зеленый цвет. Текст теперь будет зеленым (несмотря на то, что мы указали красный цвет для селектора элемента «p». Это связано с тем, что селектор класса имеет более высокий приоритет:

<html>
<head>
  <style>
    .test {color: green;}
    p {color: red;}
  </style>
</head>
<body>

<p class="test">Hello World!</p>

</body>
</html>

Теперь посмотрите на пример 3:

Пример 3

В этом примере мы добавили селектор идентификатора (названный «демо»). Текст теперь будет синим, потому что селектор id имеет более высокий приоритет:

<html>
<head>
  <style>
    #demo {color: blue;}
    .test {color: green;}
    p {color: red;}
  </style>
</head>
<body>

<p id="demo" class="test">Hello World!</p>

</body>
</html>

Теперь посмотрите на пример 4:

Пример 4

В этом примере мы добавили встроенный стиль для элемента «p». Текст теперь будет розовым, потому что встроенный стиль имеет наивысший приоритет:

<html>
<head>
  <style>
    #demo {color: blue;}
    .test {color: green;}
    p {color: red;}
  </style>
</head>
<body>

<p id="demo" class="test" style="color: pink;">Hello World!</p>

</body>
</html>


Иерархия специфики

У каждого селектора CSS есть свое место в иерархии специфичности.

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

  • Встроенные стили — пример: <h1 style="color: pink;">
  • Идентификаторы — пример: #navbar
  • Классы, псевдоклассы, селекторы атрибутов — пример: .test, :hover, [href]
  • Элементы и псевдоэлементы — Пример: h1, :before

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

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

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

Примечание. Встроенный стиль получает значение специфичности 1000 и всегда имеет наивысший приоритет!

Примечание 2. Из этого правила есть одно исключение: если вы используете !important правило, оно даже переопределит встроенные стили!

В таблице ниже приведены некоторые примеры расчета значений специфичности:

Selector Specificity Value Calculation
p 1 1
p.test 11 1 + 10
p#demo 101 1 + 100
<p style="color: pink;"> 1000 1000
#demo 100 100
.test 10 10
p.test1.test2 21 1 + 10 + 10
#navbar p#demo 201 100 + 1 + 100
* 0 0 (the universal selector is ignored)

Селектор с наивысшим значением специфичности выиграет и вступит в силу!

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

Пример

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

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

Поскольку третье правило (C) имеет наивысшее значение специфичности (1000), будет применено это объявление стиля.



Дополнительные примеры правил специфичности

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

Пример

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


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

Пример

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

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


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

Пример

From external CSS file:
#content h1 {background-color: red;}

In HTML file:
<style>
#content h1 {background-color: yellow;}
</style>

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


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

Пример

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


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