Выбрать главу

Имеются некоторые различия между вышеприведённым синтаксисом и синтаксисом, специфицированным в рекомендациях CSS1 ([CSS1]). Большинство этих отличий - из-за новых понятий в CSS2, которые отсутствовали в CSS1. Другие - из-за того, что грамматика была переписана, чтобы сделать её более читабельной. Однако есть и некоторые несовместимые изменения, которые вызвали бы ошибку в CSS1. Они разъяснены ниже.

[x]. Таблицы стилей CSS1 могут быть кодированы только 1-байт-на-символ, как ASCII и ISO-8859-1. CSS2 не имеет таких ограничений. На практике было мало трудностей с экстраполированием сканераа CSS1, и некоторые ПА принимали 2-байтное кодирование.

[x]. CSS1 допускал только четыре 16-ричных числа после обратного слэша (\) для ссылок на символы Unicode, CSS2 допускает шесть. Кроме того, CSS2 допускает символы пробела в качестве разграничителей escape-последовательностей. Например, в соответствии с CSS1, строка "\abcdef" имеет 3 буквы (\abcd, e и f), а в соответствии с CSS2 - только одну (\abcdef).

[x]. Символ табуляции (ASCII 9) в строках не допускается. Однако, поскольку строки в CSS1 использовались только для имён шрифтов и для URL, единственное, что может привести к несовместимости между CSS1 и CSS2, это если таблица стилей содержит семейство шрифтов, имеющее символ табуляции в своём имени.

[x]. Также символы новой строки (escape-последовательность с обратным слэшем) не допускались в строках CSS1.

[x]. CSS2 разбирает число со следующим непосредственно за ним идентификатором как обозначение DIMEN (т.е. как неизвестный модуль). CSS1 разбирал его как число и как идентификатор. Это означает, что в CSS1 объявление 'font: 10pt/1.2serif' было корректным, а в 'font: 10pt/12pt serif'; в CSS2 требуется пробел перед "serif". (Некоторые ПА принимали первый пример, но не принимали второй.)

[x]. В CSS1 имя класса могло начинаться цифрой (".55ft"), если только оно не было размером (".55in"). В CSS2 такие классы разбираются как неизвестные размеры (чтобы позволить в будущем дополнение новых модулей). Чтобы сделать ".55ft" действующим классом, CSS2 требует, чтобы первая цифра была escape (".\55ft")

Дополнение. Приложение F. Индекс свойств

НазваниеЗначенияНачальное значениеПрименяется: (По умолчанию: ко всем)НаследуетсяПроцентное (По умолчанию: N/A)Группа носителей
'azimuth' <angle> | [[ left-side | far-left | left | center-left | center | center-right | right | far-right | right-side ] || behind ] | leftwards | rightwards | inherit centerдазвуковой
'background'[ 'background-color' || 'background-image' || 'background-repeat' || 'background-attachment' || 'background-position'] | inherit XX визуальный нет допускается в 'background-position' визуальный
'background-attachment' scroll | fixed | inherit scroll нет визуальный
'background-image' <uri> | none | inherit noneнетвизуальный
'background-position' [ [<percentage> | <length> ]{1,2} | [ [top | center | bottom] || [left | center | right] ] ] | inherit0% 0%к элементам уровня блока и к замещаемым элементамнет относительно размеров самого боксавизуальный
'background-repeat' repeat | repeat-x | repeat-y | no-repeat | inherit repeatнетвизуальный
'border'[ 'border-width' || 'border-style' || <color> ] | inheritсм. индивидуальные свойстванетвизуальный
'border-collapse'collapse | separate | inheritcollapseк элементам 'table' и 'inline-table'давизуальный
'border-color'<color>{1,4} | transparent | inheritсм. индивидуальные свойства нет визуальный
'border-spacing' <length> <length>? | inherit 0 к элементам 'table' и 'inline-table' да визуальный
'border-style' <border-style>{1,4} | inherit см. индивидуальные свойства нет визуальный
'border-top' 'border-right' 'border-bottom' 'border-left' [ 'border-top-width' || 'border-style' || <color> ] | inherit см. индивидуальные свойства