At-rules
========

**At-rules** (@-правила) это CSS выражения, которые показывают CSS как себя вести. Они начинаются со знака '`@`' (`U+0040 КОММЕРЧЕСКОЕ AT`), сопровождается идентификатором, и включает в себя всё до следующей точки с запятой, '`;`' (`U+003B ТОЧКА С ЗАПЯТОЙ`), или до следующего CSS блока, в зависимости от того, что наступит раньше.


```css
/\* Общая структура \*/
@идентификатор (ПРАВИЛО);

/\* Пример: говорит браузеру использовать UTF-8 кодировку символов \*/
@charset "utf-8";
```


Существует несколько @-правил, обозначаемые идентификаторами, каждое из которых имеет свой синтаксис:

* `@charset` (en-US) — Определяет кодировку символов, используемый таблицей стилей.
* `@import` (en-US) — Сообщает движку CSS включить внешнюю таблицу стилей.
* `@namespace` — Сообщает механизму CSS, что все его содержимое должно рассматриваться с приставкой пространства имён XML.
* ***Вложенные @-правила*** — Подмножество вложенных операторов, которые могут использоваться как оператор таблицы стилей, а также внутри правил условной группы.
    + `@media` — Условное групповое правило, которое будет применять его содержимое, если устройство соответствует критериям условия, определённого с помощью медиавыражения.
    + `@supports` — Условное групповое правило, которое будет применять его содержимое, если браузер соответствует критериям данного условия.
    + `@document` 
    Экспериментальная возможность
     — Условное групповое правило, которое будет применять его содержимое, если документ, в котором применяется таблица стилей, соответствует критериям данного условия.
    + `@page` — Описывает аспект изменений макета, который будет применён при печати документа.
    + `@font-face` — Описывает аспект внешнего шрифта для загрузки.
    + `@keyframes` (en-US) — Описывает аспект промежуточных шагов в последовательности анимации CSS.
    + `@counter-style` — Определяет конкретные counter-styles, которые не являются частью предопределённого набора стилей.
    + `@font-feature-values` (плюс `@swash`, `@ornaments`, `@annotation`, `@stylistic`, `@styleset` и `@character-variant`)
     — Определите общие имена в `font-option-alternates` для функции, которая по-разному активируется в OpenType *(at the Candidate Recommendation stage, but only implemented in Gecko as of writing)*
Условные групповые правила
--------------------------

Как и значения свойств, каждое @-правило имеет свой синтаксис. Тем не менее, некоторые из них могут быть сгруппированы в специальную категорию, называемую Условные групповые правила. Эти операторы имеют общий синтаксис, и каждый из них может включать вложенные операторы - либо наборы правил, либо вложенные правила. Кроме того, все они передают общее семантическое значение - все они связывают некоторый тип условия, которое в любой момент оценивается как истинное или ложное. Если условие оценивается как истинное, то будут применяться все операторы в группе. Условные групповые правила описываются в CSS Conditionals Level 3 и в:

* `@media`,
* `@supports`,
* `@document`. *(deferred to Level 4 of CSS Spec)*

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

Характеристики
--------------

| Specification |
| --- |
| CSS Conditional Rules Module Level 3  |
| Compatibility Standard # css-at-rules |

Читайте также
-------------

* Ключевые концепции CSS
    + Синтаксис CSS
    + @-правила
    + комментарии
    + специфичность
    + наследование
    + блочная модель
    + режимы компоновки
    + модели визуального форматирования
    + Схлопывание отступов
    + Значения
        - начальные
        - вычисленные
        - используемые
        - действительные
    + Синтаксис определения значений (en-US)
    + Сокращённые свойства
    + Замещаемые элементы