Skip to content

Instantly share code, notes, and snippets.

@denysdovhan
Last active August 29, 2015 14:22
Show Gist options
  • Save denysdovhan/1c6e988a840ef845f267 to your computer and use it in GitHub Desktop.
Save denysdovhan/1c6e988a840ef845f267 to your computer and use it in GitHub Desktop.
@-rules

@-правила CSS

Переклад статті Джеффа Грема на CSS-Tricks від 12 травня 2015.

@-правила це оператори, що вказують CSS на інструкції щодо виконання та поводження. Кожен оператор починається символом @, що слідує перед одним із доступних ключових слів, які є ідентифікаторами того, що CSS слід робити. Такий загальний синтаксис, хоча кожне @-правило має свої варіації.

Регулярні правила

Регулярними є правила, які відповідають наступному синтаксису:

@[КЛЮЧОВЕ-СЛОВО] (ПРАВИЛА);

@charset

Це правило вказує кодування, яке має використовувати браузер. Це дуже зручно, якщо таблиця стилів містить символи, що не належать до ASCII (наприклад UTF-8). Зверніть увагу на те, що кодування вказане в заголовку HTTP перезапише будь-яке @charset-правило.

@charset "UTF-8";

@import

Це правило вставляється в самому початку файлу та вказує таблиці стилів зробити запит та включити зовнішній CSS-файл, якщо вміст цього файлу є правильним.

@import 'global.css';

Зважаючи на популярність CSS-препроцесорів, які підтримують @import, слід розуміти, що вони працюють по-іншому ніж нативні @import, що здійснюють окремий HTTP-запит для імпортованого файлу.

@namespace

Це правило особливо корисне для застосування CSS до XML HTML (XHTML), так що XHTML елементи можуть бути використані в якості селекторів в CSS.

/* Простір імен для XHTML */
@namespace url(http://www.w3.org/1999/xhtml);

/* Простір імен для SVG вбудованого в XHTML */
@namespace svg url(http://www.w3.org/2000/svg);

Вкладені правила

Вкладені правила містять підмножину додаткових вказівок, деякі з них можуть бути умовними для специфічної ситуації.

@[КЛЮЧОВЕ-СЛОВО] {
  /* Вкладені вказівки */
}

@document

Це правило задає умови для стилів, що застосовуються для певної сторінки. Наприклад, ми можемо надати URL, а потім налаштовувати стилі для цієї конкретної сторінки. Ці стилі будуть проігноровані для інших сторінок.

@document 
  /* Правила для конкретної сторінки */
  url(http://css-tricks.com/),
  
  /* Правила для сторінок з URL, що починається з... */
  url-prefix(http://css-tricks.com/snippets/),
  
  /* Правила для будь-якої сторінки, що розташована на домені */
  domain(css-tricks.com),

  /* Правила для всіх захищених сторінок */
  regexp("https:.*")
{

  /* Початок стилів */
  body { font-family: Comic Sans; }

}

Підтримка @document досить слабка на час написання цієї статі. Це правило підтримується лише в браузері Firefox з вендорним префіксом -moz.

@font-face

Це правило дозволяє завантажувати власні шрифти на сторінку. Є різні формати підтримки власних шрифтів, але це правило приймає вказівки, які створюють та підготовлюють ці шрифти.

@font-face {
  font-family: 'MyWebFont';
  src:  url('myfont.woff2') format('woff2'),
        url('myfont.woff') format('woff');
}

@keyframes

Це правило є базовим для опису ключових кадрів анімацій з допомогою багатьох CSS-властивостей, які дозволяють визначати початкові та кінцеві (а також проміжні) етапи анімації для тих елементів, що будуть анімованими.

@keyframes pulse {
  0% {
    background-color: #001f3f;
  }
  100% {
    background-color: #ff4136;
  }
}

@media

Це правило містить умовні вказівки для визначення стилів для специфічного відображення. Ці вказівки можуть включати розміри зображень, які можуть бути використанні для адаптації стилів під конкретні пристрої:

/* iPhone в портретній та ландшафтній орієнтації */
@media only screen 
  and (min-device-width: 320px) 
  and (max-device-width: 480px)
  and (-webkit-min-device-pixel-ratio: 2) {

    .module { width: 100%; }

}

Або для застосування стилів, які відображатимуться під час друку:

@media print {

}

@page

Це правило визначає стилі, що застосуються для окремих сторінок під час друку документу. Воно, зокрема, містить псевдо-елементи для стилізації першої сторінки :first, а також лівий та правий (:left та :right відповідно) відступи сторінки.

@page :first {
  margin: 1in;
}

@supports

Це правило тестує чи браузер підтримує функцію, та застосовує стилі до заданих елементів, якщо умова виконується. Це щось на зразок Modernizr тільки з урахуванням особливостей CSS властивостей.

/* Перевіряємо одну властивість */
@supports (display: flex) {
  .module { display: flex; }
}

/* Перевіряємо кілька властивостей */
@supports (display: flex) and (-webkit-appearance: checkbox) {
  .module { display: flex; }
}

Ось підтримка правила @supports:

Chrome  Safari  Firefox  Opera  IE    Android  iOS
28+     No      31+      12.1+  Edge  4.4+     No

Підводячи підсумки

@-правила є в CSS для того, щоб робити божевільні та цікаві речі. У той час, поки приклади тут прості, ми можемо побачити як ці правила можуть бути використанні в прикладних стилях для реалізації дуже специфічних завдань, тим самим створюючи користувацький досвід та інтерактивність, що відповідають очікуваним.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment