Логотип schoolsw3.com
Учебники Справочники Упражнения КАК? Меню
Создать
Редактор Поддержка Форум

×
Учебники
Справочники
Упражнения
Пожертвовать Обновление Реклама Видео Магазин

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 Комбинаторы CSS Псевдоклассы CSS Псевдоэлементы CSS Прозрачность CSS Навигация сайта CSS Выпадающие списки CSS Галерея изображений CSS Спрайты изображений CSS Атрибут селектора CSS Формы CSS Счетчики CSS Макет сайта CSS Единицы измерений CSS Особенности CSS !important CSS Математ. функции

CSS3 Учебник

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

CSS Адаптивный

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

CSS Сетка

Сетка Введение Сетка Контейнер Сетка Пункт

CSS Примеры

CSS Макеты CSS Примеры кода CSS Онлайн редактор CSS Фрагменты кода CSS Тест-викторина CSS Упражнения CSS Сертификат

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

CSS Справочник CSS Селекторы CSS Функции CSS Звук CSS Веб Шрифты CSS Анимации CSS Длины CSS PX-EM Конвертер CSS Цвета 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

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

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

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

</body>
</html>

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

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

Пример 3

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

<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-селектор имеет свое место в иерархии специфичности.

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

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

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

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

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

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

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

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

Селектор Значение специфичности Расчет
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 (универсальный селектор игнорируется)

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

Рассмотрим следующие три фрагмента кода:

Пример
A: h1
B: #content h1
C: <div id="content"><h1 style="color: #ffffff">Заголовок</h1></div>

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

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


Дополнительные примеры правил конкретизации

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

Пример
h1 {background-color: yellow;}
h1 {background-color: red;}

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

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


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

Пример
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.