@charset
Команда @charset применяется для задания кодировки внешнего CSS-файла. Это имеет значение в том случае, если в CSS-файле используются символы национального алфавита.
Для внешней таблицы стилей браузер последовательно просматривает следующие пункты для определения кодировки таблицы стилей:
Приведённый список имеет чётко выраженную иерархию - чем выше находится пункт, тем выше его приоритет. Если ни один из пунктов не найден, будет установлена кодировка UTF-8.
- Значения
Для русского языка обычно указывается кодировка windows-1251 или utf-8. Значение кодировки обязательно должно быть взято в кавычки.
- Пример
@charset "windows-1251";
body {
font: 11pt Arial, Helvetica, sans-serif;
margin: 0;
color: #000;
}
p.new:after {
content: " Новье!";
}
@document
@document устанавливает стилевые правила на основе адреса документа. К примеру, если адреса мобильной и основной версии сайта различаются, то мы можем задать собственный стиль элементов для каждой версии.
- Значения
- Пример
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>@document</title>
<style>
.ssl {
display: none;
}
@-moz-document regexp("https:.*") {
.ssl {
display: block;
background: #5bd4b6;
color: #fff;
padding: 20px;
}
}
</style>
</head>
<body>
<div class="ssl">
Для вашей безопасности на сайте мы используем защищённый протокол.
</div>
</body>
</html>
В данном примере блок с классом ssl будет виден только на сайте, адрес которого начинается с протокола https.
@font-face
Правило @font-face позволяет определить настройки шрифтов, а также загрузить специфичный шрифт на компьютер пользователя.
- Значения
Внутри конструкции @font-face может находиться набор свойств для изменения параметров шрифта (font-family, font-size, font-style и др.), а также ссылка на шрифтовой файл. Ссылка записывается в виде src: url(<адрес>), где <адрес> - относительный или абсолютный путь к файлу.
- Пример
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>@font-face</title>
<style>
@font-face {
font-family: Pompadur; /* Имя шрифта */
src: url(/example/font/pompadur.ttf); /* Путь к файлу со шрифтом */
}
p {
font-family: Pompadur;
}
</style>
</head>
<body>
<p>Протяженность варьирует дорийский микрохроматический интервал, но если бы песен было раз в пять меньше, было бы лучше для всех.</p>
</body>
</html>
@import
Правило @import позволяет импортировать содержимое CSS-файла в текущую стилевую таблицу.
- Значения
В качестве значения используется путь к стилевому файлу, который указывается внутри необязательной конструкции url(). Путь к файлу при этом можно писать как в кавычках (двойных или одинарных), так и без них.
В качестве типа носителя выступают различные устройства:
- Пример
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Импорт стиля</title>
<style>
@import "/style/main.css" screen; /* Стиль для вывода результата на монитор */
@import "/style/palm.css" print; /* Стиль для печати */
</style>
</head>
<body>
<p>...</p>
</body>
</html>
@keyframes
Правило @keyframes устанавливает ключевые кадры при анимации элемента. Ключевой кадр это свойства элемента (прозрачность, цвет, положение и др.), которые должны применяться к элементу в заданный момент времени. Таким образом, анимация представляет собой плавный переход стилевых свойств от одного ключевого кадра к другому. Вычисление промежуточных значений между такими кадрами берёт на себя браузер.
- Значения
- Пример
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>@keyframes</title>
<style>
.creature {
width: 200px;
height: 200px;
border-radius: 50%;
background: #3ac;
position: relative;
}
.creature::before,
.creature::after {
content: '';
position: absolute;
width: 30px;
height: 40px;
border-radius: 50%;
background: #000;
top: 40px;
animation: eye 3s ease-in-out infinite;
-webkit-animation: eye 3s ease-in-out infinite;
}
.creature::before { left: 55px; }
.creature::after { right: 55px; }
@keyframes eye {
90% { transform: none; }
95% { transform: scaleY(0.1); }
}
@-webkit-keyframes eye {
90% { transform: none; }
95% { transform: scaleY(0.1); }
}
</style>
</head>
<body>
<div class="creature"></div>
</body>
</html>
@media
Правило @media позволяет указать тип носителя, для которого будет применяться указанный стиль. В качестве типов выступают различные устройства:
- Значения
После ключевого слова @media идёт один или несколько типов носителя; если их больше одного, то они разделяются между собой запятой. После чего следуют обязательные фигурные скобки, внутри которых пишутся стилевые правила.
@page
Правило @page позволяет задать значение полей при печати документа или для страниц, у которых тип носителя задан как print.
- Значения
Для установки полей на странице используется универсальное свойство margin или его производные - margin-top, margin-right, margin-bottom и margin-left, задающие соответственно отступ сверху, справа, снизу и слева. Отрицательное значение допускается, но часть страницы может оказаться «отрезанной». Свойства border и padding не применимы.
Ключевое слово :left позволяет задать поля для всех левых страниц, :right - для всех правых, а :first - для первой страницы.
@supports
Правило @supports позволяет проверить, поддерживает браузер ту или иную возможность, и на основе этого создать набор стилевых правил. Допустимо создавать комплексные условия с помощью логических операторов not, and, or.
- Значения
В качестве условия в круглых скобках пишется стилевое свойство и его значение. Далее в фигурных скобках идут стилевые правила. Если браузер поддерживает указанное свойство, то применяются заданные стилевые правила, в противном случае они игнорируются.
@supports (transform: perspective(300px)) {
/* Браузер поддерживает свойство transform с функцией perspective() */
}
Для проверки того, что свойство не поддерживается применяется логический оператор not, он ставится перед условием.
@supports not (transform: perspective(300px)) {
/* Браузер НЕ поддерживает свойство transform с функцией perspective() */
}
Объединить несколько условий можно через логический оператор and. Если хотя бы одно из условий не поддерживается, то стилевые правила не применяются.
@supports (transform-origin: 50% 100%) and (transform: perspective(300px)) {
/* Браузер одновременно поддерживает свойства transform-origin И transform с функцией perspective() */
}
Для выбора одного из условий используется логический оператор or. Если поддерживается хотя бы одно из условий, то применяются стилевые правила.
@supports (perspective: 300px) or (transform: perspective(300px)) {
/* Браузер поддерживает свойство perspective ИЛИ свойство transform с функцией perspective() */
}
- Пример
<!DOCTYPE html>
<html>
<head>
<title>@supports</title>
<meta charset="utf-8">
<style>
@supports (display: flex) {
.no { display: none; }
}
@supports not (display: flex) {
.yes { display: none; }
}
</style>
</head>
<body>
<p class="yes">Ваш браузер поддерживает display: flex.</p>
<p class="no">Ваш браузер не поддерживает display: flex.</p>
</body>
</html>
@viewport
Позволяет оптимизировать макет веб-страницы в зависимости от различных устройств и их размеров. Является аналогом <meta name="viewport">, но переносит параметры из HTML в правила CSS.