@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.