@-правила в CSS

@-правила в CSS

Привет,

Сегодня у нас небольшая заметка (основанная на статье «Demystifying CSS At-Rules»), в которой речь пойдет о применении в CSS правил, содержащих в себе символ «@».

В статье будут рассмотрены правила @import, @media, @charset и популярный сейчас @font-face, который позволяет использовать собственные шрифты на страницах сайта (про сторонние шрифты у нас уже была статья «Как использовать любой шрифт на сайте»).

@charset

Это правило указывает на то, какую кодировку использует ваш файл стилей. Правило необходимо объявлять в самом начале файла, на первой строке без каких-либо других символов перед ним, указываемая кодировка дожна быть в соответствующем формате. Например, вот так будет выглядеть код для кодировки UTF-8:

@charset "UTF-8"

@import

С помощью этого правила можно включать один CSS файл в другой. Это правило нужно опять же указывать в самом верху страницы. Используя различный синтаксис, можно скрыть подключаемый файл о какой-то версии браузера. Например, если указать тип медиа в правиле, то ИЕ6 и ниже не подключат указанный файл:

@import (/not-for-ie.css) screen;

Так же советую прочитать статью о скорости загрузки стилей при использовании @import — «Не используйте @import». 

Раз уж заговорили о медиатипах, то давайте рассмотрим, какие в принципе бывают:

  • all — для всех, используется по умолчанию;
  • aural — речевые синтезаторы и программы для звукового воспроизведения текста;
  • braille — устройства, основанные на системе Брайля, которые предназначены для слепых людей;
  • handheld — карманные компьютеры, мобильные телефоны и аналогичные устройства;
  • print — устройства печати;
  • projection — проекторы;
  • screen — экран монитора;
  • tv — телевизоры.

@media

С помощью этого правила в общем файле стилей можно указать правила, которые следует использовать на конкретных типа устройств. Например, вот это правило сработает только для печати: 

@media print {
#sidebar {
display: none;
}
}

К счастью, все современные браузеры корректно обрабатывают это правило. Но существуют хаки CSS с использованием этого правила.

@font-face

Данное правило позволяет вам подключать и применять на своем сайте отличные от стандартных шрифты. Замечательно то, что на данный момент браузеры IE 6-8, Firefox 3.5+ (Mac и PC), Safari (Mac и PC), Chrome 4+ и Opera 10+ поддерживают это правило полностью. Незамечательно то, что IE имеет некоторые ограничения на подключаемые шрифты.

Кроссбраузерное использование правила выглядит следующим образом:

@font-face {
font-family: "Название_вашего_шрифта";
src: url(путь_до_файла/файл_шрифта.eot); /* специально для IE */
src: local("Действительное_название_шрифта"), url(путь_до_файла/файл_шрифта.ttf ) format("truetype"); /* для всех остальных */
}

/* Использование шрифта */
.yourFontName {
font-family: "Название_вашего_шрифта", verdana, helvetica, sans-serif;
}

 

На этом все. Надеюсь, что статья окажется для вас полезной.

Какие из этих правил вы используете? О каких не знали?

Расскажите друзьям

Оцените статью:
  • 1
  • 2
  • 3
  • 4
  • 5

Комментарии — 16

MyFreeWeb
@media не использовал нигде пока, а остальные известны.
TuTbaker
Ничего нового вы нам не поведали, только повторили то, что уже было написано и переписано 10 раз
#
TuTbaker
Motorstorm
MyFreeWeb, как ни странно я тоже еще @media не использовал, буду пробовать...
Lelik
будем пробовать)
CyberMan
Как не странно @charset, @import, @media, @font-face я знаю. Ведь я программист))). А так статья познавательная для новичков и не только)))
Motorstorm
CyberMan, ну это естественно, а я-то новичок в этом деле, поэтому буду изучать и наверстывать:)
Username
А какой смысл в @charset? Разве браузеру не всё равно в какой кодировке у меня css (или если например я укажу koi8-r, а кто-то пересохранит в utf8)
#
Username
Grin
Username, насколько я понимаю, это нужно для корректной обработки символов в том же свойстве content.
ar-
интересная статья, сейчас работаю с @font-face над новым проектом. Полное ПИ и извращение. К вашей статье о @font-face не хватает еще пару ссылок на дополнительные темы:
1. http://lovtsevich.com/2009/10/26/font-face-ili-nazad-v-budushhee/
подробное описание подключение шрифтов через CSS

2. http://www.fontsquirrel.com/fontface/generator
гернератор шрифтов, конвертирует туда-сюда и все отдает в архиве + создает CSS, что заметно упрощает работу над подключением шрифтов и поддержки кроссбраузерности :)

P.S. Люди не надо извращением заниматься с @font-face, потому что эти новые фишки CSS еще не скоро будут работать стабильно. А скорее может быть и вообще не будут работать правильно.
#
ar-
darya
Статья преинтереснейшая! Люблю читать такого рода статьи! Автор молодец!
#
darya
KruGoZor
darya

очень содержательный камент.
gus2
А возможно ли на чистом CSS выполнить пропорциональный ресайз фоновой картинки, чтобы она всегда закрывала весь фон, как здесь: http://www.alexandergusev.com/
#
gus2
Van
в FireFox, на сколько я знаю, по умолчанию стоит галочка в настройках... запрещающая работать со страницами, в которых прописан @font-face. Он просто игнорирует данную настройку.

так что, это всё до задней ручки) знать приятно, но использовать не вариант.
#
Van
Ира
Пост грамотно написан. Приятно читать.
#
Ира
asterix
Как я понял погруженный шрифт работает только в IE, интересно как обстоят дела в Хроме.
Илья
А что за расширение шрифта *.eot для IE? Впервые такой вижу.
#
Илья  

Новый комментарий

как выглядит какой тег
жирный текст <b>жирный текст</b>
курсивный тект <i>курсивный тект</i>
зачеркнутый текст <s>зачеркнутый текст</s>
подчеркнутый текст <u>подчеркнутый текст</u>
ссылка <a href="адрес">ссылка</a>
function foo() { ... }
<pre><code>function foo() { ... } </code></pre>
разрешенные теги или посмотреть как будет выглядеть
как выглядит какой тег
жирный текст <b>жирный текст</b>
курсивный тект <i>курсивный тект</i>
зачеркнутый текст <s>зачеркнутый текст</s>
подчеркнутый текст <u>подчеркнутый текст</u>
ссылка <a href="адрес">ссылка</a>
function foo() { ... }
<pre><code>function foo() { ... } </code></pre>
разрешенные теги или посмотреть как будет выглядеть
counter strike mt2 silkroad pvp metin2 metin2 pvp knight pvp gm olarak başlayan pvpler pvp silkroad pvp serverler counter strike serverler msn show cam show görüntülü sohbet oyunlar suskunlar gazete oku