CSS правила
At-правила начинаются с @ и управляют таблицей стилей: подключают файлы, задают условия, слои каскада, шрифты и
анимации. Это не CSS-свойства. Дескрипторы внутри некоторых правил настраивают само правило, например src у
@font-face.
Свойства · Селекторы · Функции
Названия со ссылками ведут к отдельным статьям; остальные возможности кратко описаны здесь. Поддержка отдельных значений и расширенного синтаксиса может отличаться.
| Правило | Описание |
|---|---|
@charset
|
Указывает кодировку внешней таблицы стилей на уровне байтов. Это специальная последовательность в начале файла; BOM и транспортные метаданные также участвуют в выборе кодировки. |
@font-face
|
Описывает семейство и источник шрифта: локальное начертание или загружаемый файл, а также его дескрипторы. |
@font-feature-values |
Объявляет имена альтернативных глифов для функций свойства font-variant-alternates. |
@import
|
Подключает внешнюю таблицу стилей с необязательными условиями и слоем. Предшествует обычным правилам; перед
ним допустимы @charset и объявления порядка слоёв @layer без блока.
|
@keyframes
|
Позволяет контролировать промежуточные этапы анимации путем создания ключевых кадров (или точки) в процессе анимации. |
@media
|
Правило, которое используется для изменения CSS стилей на основании определенных характеристик устройства, связанных с отображением контента, таких как ширина, высота, ориентация, разрешение экрана и так далее. Имеет широкое применение в адаптивном веб-дизайне. |
Условия, каскад и области действия
| Название | Назначение |
|---|---|
@supports |
Применяет блок при поддержке декларации или селектора; это проверка возможности, а не определение браузера. |
@container |
Применяет стили по параметрам контейнера: размерам, стилям или состоянию прокрутки. Поддержка видов запросов различается. |
@layer |
Объявляет порядок слоёв каскада или помещает правила в слой. Для !important порядок приоритета слоёв обратный. |
@scope |
Ограничивает область действия селекторов корнем и необязательной границей области. |
@namespace |
Связывает префикс пространства имён с URI для использования в селекторах XML/SVG. |
@starting-style |
Определяет исходные стили для перехода, когда у элемента ещё нет предыдущего отображаемого состояния. |
Шрифты, счётчики, печать и переходы
| Название | Назначение |
|---|---|
@font-palette-values |
Объявляет именованную палитру цветного шрифта для font-palette. |
@counter-style |
Объявляет собственную систему счётчиков и маркеров списков. |
@property |
Регистрирует пользовательское свойство: допустимый синтаксис, наследование и начальное значение. |
@page |
Настраивает страницу при печати: размер, поля и вложенные области полей. |
@top-left, @top-center, @top-right, @bottom-left,
@bottom-center, @bottom-right
|
Вложенные правила @page для содержимого верхнего и нижнего поля; поддержка различается. |
@top-left-corner, @top-right-corner, @bottom-left-corner,
@bottom-right-corner
|
Вложенные правила угловых областей полей страницы. |
@left-top, @left-middle, @left-bottom, @right-top,
@right-middle, @right-bottom
|
Вложенные правила боковых полей страницы. |
@position-try |
Объявляет именованный вариант размещения якорно позиционированного элемента при переполнении. |
@view-transition |
Включает переходы между документами при подходящей навигации; условия и поддержка отличаются от переходов внутри документа. |
@stylistic, @styleset, @character-variant, @swash,
@ornaments, @annotation
|
Вложенные блоки @font-feature-values связывают понятные имена с номерами альтернативных глифов.
|
Экспериментальные правила
| Название | Назначение |
|---|---|
@color-profile |
Описывает пользовательский цветовой профиль для color(); экспериментальное. |
@function |
Объявляет пользовательскую CSS-функцию с именем, начинающимся с --; экспериментальное. |
@mixin, @apply, @contents |
Проект механизма повторного использования наборов правил и передачи содержимого; экспериментальное, не Sass. |
@custom-media |
Объявляет имя для повторно используемого медиаусловия; экспериментальное. |
Исторические расширения
| Название | Назначение |
|---|---|
@document |
Нестандартное ограничение стилей по адресу документа; обычным таблицам стилей не следует полагаться на него. |
Другие экспериментальные условия
| Название | Назначение |
|---|---|
@when, @else |
Проект условных цепочек CSS Conditional Rules: выбирается первая подходящая ветвь. Условия могут сочетать проверки среды и поддержки. Поддержка ограничена; обычные @media и @supports не требуют этих правил. |
@supports-condition — экспериментальное объявление именованной проверки поддержки для повторного
использования в @supports. Название и синтаксис в проекте CSS Conditional Rules ещё обсуждаются.
Как работают условия
Правила внутри @supports применятся только при поддержке display: grid.
Поддержка синтаксиса не гарантирует отсутствие ошибок реализации или подходящий результат раскладки.
@supports (display: grid) {
.cards {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 1rem;
}
}Спецификация
Порядок слоёв и !important
В первом абзаце выигрывает более поздний слой theme, во втором — ранний base из-за !important. Поменяйте порядок в первой строке и сравните.
base.css
* {
box-sizing: border-box;
}
body {
margin: 16px;
font:
16px/1.5 system-ui,
sans-serif;
color: #24364b;
overflow-wrap: anywhere;
}
p {
padding: 12px;
border: 2px solid currentColor;
}
index.html
<html lang="ru">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Порядок слоёв и !important</title>
</head>
<body>
<p class="normal">Обычные объявления</p>
<p class="important">Объявления с !important</p>
</body>
</html>
style.css
@layer base, theme;
@layer base {
p {
color: #216e39;
}
.important {
color: #216e39 !important;
}
}
@layer theme {
p {
color: #b3261e;
}
.important {
color: #b3261e !important;
}
}