Содержание
Сообщество CSS получило существенный опыт со спецификацией CSS2, с тех пор как она стала рекомендацией в 1998. Ошибки в спецификации CSS2 были впоследствии исправлены путем публикации различных списков ошибок, но они еще не было возможности изменить спецификацию на основе полученного опыта.
В то время как многие из этих проблем будут адресованы грядущими спецификациям CSS3, текущее состояние дел препятствует реализации и функциональной совместимости CSS2. Спецификация CSS.2 1 пытается адресовать эту ситуацию путем:
Таким образом, хотя это не означает, что таблица стилей CSS2 обязательно прямо-совместима с CSS 2.1, это означает, что таблица стилей, ограничивающая себя функциями CSS 2.1, вероятнее всего найдет совместимый агент пользователя сегодня и сохранит прямую совместимость в будущем. Хотя нарушение прямой совместимости не желательно, мы полагаем, что выгоды для пересмотров в CSS 2.1 являются стоящими.
CSS 2.1 разработана на основе CSS2 и предназначена для ее замены. Некоторые части CSS2 остались неизменными в CSS 2.1, некоторые части были изменены, а некоторые части - удалены. Удаленные части могут быть использованы в будущей спецификации CSS3. Будущие спецификации должны ссылаться на CSS 2.1 (пока они не нуждаются в функциях из CSS2, которые были пропущены в CSS 2.1, и затем им следует ссылаться на CSS2 только для тех функций, или предпочтительно ссылаться на такую функцию(и) в соответствующем Модуле CSS3, который включает эту функцию(и)).
Этот раздел не является нормативным.
Данная спецификация предназначена для двух типов читателей: для тех, кто внедряет CSS, и для тех, кто разрабатывает CSS. Предполагается, что первые найдут здесь описание средств, с помощью которых они смогут создавать эффективные, внешне привлекательные и легкочитаемые документы, не вдаваясь в подробности реализации CSS. В свою очередь, разработчики должны найти здесь все необходимое им для создания конформных пользовательских агентов. Спецификация начинается с общих представлений о CSS и по мере приближения к концу становится все более узконаправленной, в ней появляется все больше технических подробностей. Как в электронной, так и в печатной версиях спецификации для быстрого доступа к информации имеются общее содержание, более подробное содержание в начале каждого раздела, и предметный указатель.
Спецификация разрабатывалась для представления в двух видах: электронном и распечатанном. Хотя оба эти представления, без сомнения, будут схожи, читатели обнаружат и некоторые различия. Например, в печатной версии, очевидно, невозможен переход по гиперссылкам, а в электронной версии не будет номеров страниц. В случае других несовпадений главной версией спецификации считается электронный вариант.
Этот раздел не является нормативным.
Спецификация разбита на следующие разделы:
В CSS определение каждого свойства начинается с краткой основной информации примерно следующего вида:
| Значение: | допустимые значения и синтаксис |
| Начальное значение: | значение, принимаемое свойством по умолчанию |
| Область применения: | элементы, к которым применяется данное свойство |
| Наследование: | является ли свойство наследуемым |
| Процентное задание: | способ интерпретации значения свойства, заданного в процентах |
| Устройства: | к каким группам устройств применяется это свойство |
| Рассчитанное значение: | как вычислить рассчитанное значение |
Эта часть определяет набор допустимых значений для свойства, которое называется 'property-name'. Типы значений могут задаваться с помощью
Слэш "/" и запятая "," должны также отображаться так, как указаны, без дополнительных символов. Набор принимаемых свойством значений задается одним из следующих способов:
несколько следующих друг за другом значений.
Следование значений по силе превосходит разделение с помощью двойной черты, которое, в свою очередь, сильнее разделения одинарной чертой. Таким образом, следующие две строки эквиваленты:
a b | c || d e
[ a b ] | [ c || [ d e ]]
После каждого типа значений, ключевого слова или заключенной в скобки группы слов может следовать один из перечисленных ниже модификаторов:
Следующие примеры иллюстрируют различные способы задания набора значений:
Значение: N | NW | NE
Значение: [ <length> | thick | thin ]{1,4}
Значение: [<имя семейства> , ]* <имя семейства>
Значение: <uri>? <цвет> [ / <цвет> ]?
Значение: <uri> || <цвет>
Типы значений определяются в терминах меток, как описано в Приложении G.2. Поскольку грамматика допускает пробелы между метками в компонентах expr production, пробелы могут применяться между метками в значениях.
Примечание: Во многих случаях, пробелы фактически будут требоваться между метками, чтобы отличить их друг от друга. Например, значение '1em2em' анализировалось бы как одиночная метка DIMEN с числовым значением '1' и идентификатором 'em2em', который является недопустимой единицей измерения. В этом случае потребуется пробел перед '2', чтобы оно анализировалось как две длины: '1em' и '2em'.
В этом поле указывается значение, принимаемое свойством по умолчанию. Информацию о взаимодействии значений, заданных в таблице стилей, наследуемых и начальных значений можно найти в разделе о каскаде.
В этом поле перечисляются элементы, к которым применяется данное свойство. Считается, что все элементы обладают всеми свойствами, но не для каждого элемента все свойства имеют какой-либо эффект. Например, свойство 'clear' влияет только на элементы уровня блока.
В этом поле указывается, наследуется ли значение свойства от родительского элемента. Информацию о взаимодействии значений, заданных в таблице стилей, наследуемых и начальных значений можно найти в разделе о каскаде.
В этом поле указывается способ интерпретации значения, выраженного в процентах, если оно встречается в значении свойства. Если в этом поле содержится запись "N/A", то для этого свойства значения в процентах недопустимы.
В этом поле указываются группы устройств, к которым применяется данное свойство. Информация о группах устройств не является нормативной.
Эта часть описывает рассчитанные значения для свойств. О том, как используются эти размеры, смотрите раздел о рассчитанных значениях.
Некоторые свойства являются стенографическими свойствами, т.е. они позволяют указывать значения сразу нескольких свойств одновременно.
Например, свойство 'font' является стенографическим для установки свойств 'font-style', 'font-variant', 'font-weight', 'font-size', 'line-height' и 'font-family' одновременно.
Если в сокращенной форме упускаются некоторые значения, то каждому не определенному свойству присваивается его начальное значение (см. раздел о каскаде).
Следующие несколько правил:
h1 {
font-weight: bold;
font-size: 12pt;
line-height: 14pt;
font-family: Helvetica;
font-variant: normal;
font-style: normal;
}
можно записать намного короче с использованием одного стенографического свойства:
h1 { font: bold 12pt/14pt Helvetica }
В этом примере свойства 'font-variant' и 'font-style' принимают свои начальные значения.
Все примеры, демонстрирующие недопустимые операции, имеют пометку "ПРИМЕР НЕДОПУСТИМОГО ИСПОЛЬЗОВАНИЯ".
Примеры HTML, в которых отсутствует объявление DOCTYPE, являются SGML Text Entities, соответствующим HTML 4.01 Strict DTD [HTML4]. Остальные примеры HTML соответствуют DTD, приведенным в примерах.
Все комментарии носят ознакомительный характер.
Примеры и комментарии маркированы в пределах исходного текста HTML для спецификации и агенты пользователей CSS будут обрабатывать их особо.
Большинство изображений в электронной версии данного документа сопровождаются "длинными описаниями". Ссылка на длинное описание обозначается значком "[D]" после изображения.
Изображения и длинные описания носят исключительно информативный характер.
Этот раздел не является нормативным.
CSS 2.1 базируется на CSS2. Информацию о людях, создававших CSS2, смотрите в разделе CSS2 о благодарностях.
Мы хотели бы поблагодарить следующих людей, которые своим участие и ответами в рассылке www-style, помогли нам с созданием этой спецификации: Andrew Clover, Bernd Mielke, C. Bottelier, Christian Roth, Christoph Pдper, Claus Fдrber, Coises, Craig Saila, Darren Ferguson, Dylan Schiemann, Etan Wexler, George Lund, James Craig, Jan Eirik Olufsen, Jan Roland Eriksson, Joris Huizer, Joshua Prowse, Kai Lahmann, Kevin Smith, Lachlan Cannon, Lars Knoll, Lauri Raittila, Mark Gallagher, Michael Day, Peter Sheerin, Rijk van Geijtenbeek, Robin Berjon, Scott Montgomery, Shelby Moore, Stuart Ballard, Tom Gilder, Vadim Plessky, и редакторов Open eBook Publication Structure Working Group. Мы также хотим выразить благодарность Glenn Adams и Susan Lesch, которые помогли корректировать этот документ.
Кроме того, мы хотели бы выразить особую благодарность fantasai, Ada Chan и Boris Zbarsky, которые уделили существенное время CSS 2.1, и Kimberly Blessing за помощь с редактированием.