Читаем Спецификация CSS2 полностью

ЛексемаОпределение
IDENT{ident}
ATKEYWORD@{ident}
STRING{string}
HASH#{name}
NUMBER{num}
PERCENTAGE{num}%
DIMENSION{num}{ident}
URIurl\({w}{string}{w}\) | url\({w}([!#$%&*-~]|{nonascii}|{escape})*{w}\)
UNICODE-RANGEU\+[0-9A-F?]{1,6}(-[0-9A-F]{1,6})?
CDO
;;
{\{
}\}
(\(
)\)
[\[
]\]
S[ \t\r\n\f]+
COMMENT\/\*[^*]*\*+([^/][^*]*\*+)*\/
FUNCTION{ident}\(
INCLUDES~=
DASHMATCH|=
DELIMлюбой другой символ, не совпавший с вышеприведёнными правилами

Вышеприведённые макросы в фигурных скобках ({}) определены так:

МакросОпределение
ident{nmstart}{nmchar}*
name{nmchar}+
nmstart[a-zA-Z]|{nonascii}|{escape}
nonascii[^\0-\177]
unicode\\[0-9a-f]{1,6}[ \n\r\t\f]?
escape{unicode}|\\[ -~\200-\4177777]
nmchar[a-z0-9-]|{nonascii}|{escape}
num[0-9]+|[0-9]*\.[0-9]+
string{string1}|{string2}
string1\"([\t !#$%&(-~]|\\{nl}|\'|{nonascii}|{escape})*\"
string2\'([\t !#$%&(-~]|\\{nl}|\"|{nonascii}|{escape})*\'
nl\n|\r\n|\r|\f
w[ \t\r\n\f]*

Ниже дан синтаксис ядра CSS. В последующих разделах описывается, как этот синтаксис использовать. Приложение D описывает более ограниченный набор грамматических правил исключительно для уровня 2 языка CSS.

stylesheet : [ CDO | CDC | S | statement ]*; statement : ruleset | at-rule; at-rule : ATKEYWORD S* any* [ block | ';' S* ]; block : '{' S* [ any | block | ATKEYWORD S* | ';' ]* '}' S*; ruleset : selector? '{' S* declaration? [ ';' S* declaration? ]* '}' S*; selector : any+; declaration : property ':' S* value; property : IDENT S*; value : [ any | block | ATKEYWORD S* ]+; any : [ IDENT | NUMBER | PERCENTAGE | DIMENSION | STRING | DELIM | URI | HASH | UNICODE-RANGE | INCLUDES | FUNCTION | DASHMATCH | '(' any* ')' | '[' any* ']' ] S*;

Лексемы КОММЕНТАРИЕВ в грамматике отсутствуют (для сохранения читабельности), но некоторое количество этих лексем может появляться где-либо среди других лексем.

Лексема S в вышеприведённой грамматике стоит вместо пробела. Только символы "space" (Unicode code 32), "tab" (9), "line feed" (10), "carriage return" (13) и "form feed" (12) могут служить пробелами. Другие "пробелоподобные" символы, такие как "em-space" (8195) и "ideographic space" (12288), никогда не могут быть пробелами.

Ключевые слова имеют форму идентификаторов. Ключевые слова обязаны не размещаться между кавычками ("..." или '...'). Таким образом,

red

это ключевое слово, а

"red"

- нет (это строка). Другие неверные примеры:

width: "auto"; border: "none"; font-family: "serif"; background: "red";

Следующие правила всегда соблюдаются:

[x]. Все таблицы стилей CSS нечувствительны к регистру, за исключением тех частей, которые не контролируются CSS. Например, чувствительность к регистру значений атрибутов "id" и "class", имён шрифтов и URI в HTML находится вне пределов действия этой спецификации. Особо отметьте, что имена элементов нечувствительны к регистру в HTML, но чувствительны в XML.

Перейти на страницу:

Похожие книги