Предположим, например, что разборщик CSS2 обрабатывает такую таблицу стилей:
@import "subs.css"; H1 { color: blue } @import "list.css";
Второе '@import', в соответствии с CSS2, недопустимо. Разборщик CSS2 игнорирует всё at-правило , сокращая таблицу стилей до:
@import "subs.css"; H1 { color: blue }
Здесь второе правило '@import' - неверное, поскольку появляется внутри блока '@media' .
@import "subs.css"; @media print { @import "print-main.css"; BODY { font-size: 10pt } } H1 {color: blue }
Блок начинается с левой фигурной скобки ({) и заканчивается парной правой скобкой (}). Между ними могут находиться любые символы, кроме скобок (( )), квадратных скобок ([ ]) и фигурных скобок ({ }), которые обязаны всегда использоваться в паре и могут вкладываться. Одиночные (') и двойные (") кавычки также обязаны использоваться парами, а символы между ними разбираются как строка \string. См. выше определение строки в Лексическом разборе.
Это пример блока . Обратите внимание, что правая скобка между двойными кавычками не образует пары с открывающей скобкой блока , а вторая одиночная кавычка - это escape-символ, не образующий пары с первой одиночной кавычкой:
{ causta: "}" + ({7} * '\'') }
Заметьте, что это неверное правило CSS2, образующее, тем не менее, блок , как указано выше.
Набор правил (называемый также "правило") состоит из cелектора с последующим блоком объявлений .
Блок объявлений (называемый также в последующем тексте {}-блоком) начинается с левой фигурной скобки ({) и заканчивается парной правой скобкой (}). Между ними может находиться список из 0 или более разделённых точкой с запятой (;) объявлений.
Cелектор(см. также раздел Селекторы) состоит из чего-либо, предшествующего первой скобке (но не включая) ({). Cелекторвсегда идёт вместе с {}-блоком. Если ПА не может разобрать cелектор (т.е. если он неверен в CSS2), он обязан также игнорировать и {}-блок.
В CSS2 запятая (,) имеет специальное значение в cелекторах . Однако, поскольку не известно, примет ли запятая иные значения в последующих версиях CSS, весь оператор должен быть проигнорирован, если где-либо в селекторе имеется ошибка, даже если остальная часть cелектора выглядит как соответствующая CSS2.
Например, поскольку "&" это неверная лексема в селекторе CSS2, ПА CSS2 обязан игнорировать всю вторую строку и не устанавливать красный цвет в H3:
H1, H2 {color: green } H3, H4 & H5 {color: red } H6 {color: black } Это более сложный пример. Первые две пары фигурных скобок находятся внутри строки и не обозначают конец cелектора. Это - верный оператор CSS2. P[example="public class foo\ {\ private int x;\ \ foo(int x) {\ this.x = x;\ }\ \ }"] { color: red }
Объявление может быть пустым или состоять из свойства с последующими двоеточием (:) и значением . Вокруг каждого из них могут быть пробелы.
В зависимости от способа работы cелектора , несколько объявлений для одного cелектора могут быть упорядочены точкой с запятой (;), разделяющей группы.
Таким образом, следующие правила: H1 { font-weight: bold } H1 { font-size: 12pt } H1 { line-height: 14pt } H1 { font-family: Helvetica } H1 { font-variant: normal } H1 { font-style: normal } эквивалентны: H1 { font-weight: bold; font-size: 12pt; line-height: 14pt; font-family: Helvetica; font-variant: normal; font-style: normal }
Cвойстваэто идентификаторы. Между ними могут находиться любые символы, кроме скобок (( )), квадратных скобок ([ ]) и фигурных скобок ({ }), которые обязаны всегда использоваться в паре, а точка с запятой вне строки обязана вводиться с использованием escape-последовательности . Угловые, квадратные и круглые скобки могут вкладываться. Внутри кавычек символы разбираются как строка .
Синтаксис значений специфицируется отдельно для каждого cвойства , но, в любом случае, значения выводятся из идентификаторов , строк, чисел, размеров, процентов, URI, цветов, углов, времени и частот.
ПА обязан игнорировать объявление с неверным названием cвойства или неверным значением . Каждое свойство CSS2 имеет свой собственный синтаксис и семантические ограничения для принимаемых значений.
Предположим, что разборщик CSS2 обрабатывает такую таблицу стилей:
H1 { color: red; font-style: 12pt } /* Неверное значение: 12pt */ P { color: blue; font-vendor: any; /* Неверное свойство: font-vendor */ font-variant: small-caps } EM EM { font-style: normal }
Второе объявление в первой строке имеет неверное значение '12pt'. Второе объявление второй строки содержит неопределённое свойство 'font-vendor'. Разборщик CSS2 будет игнорировать эти объявления, уменьшая таблицу до:
H1 { color: red; } P { color: blue; font-variant: small-caps } EM EM { font-style: normal }
Читать дальше