Поиск

Приложение B. Отличия от CSS1

Это приложение не является нормативным, а носит только информативный характер.

CSS2 базируется на CSS1, так что все таблицы стилей, допустимые в CSS1, допустимы и в CSS2. Различия между спецификацией CSS1 (см. [CSS1]) и настоящей спецификацией разделены на три группы: новые функциональные возможности, обновленные описания функциональных возможностей CSS1 и изменения в CSS1.

Новые функциональные возможности

В дополнение к тем функциональным возможностям, которые уже существовали в CSS1, в CSS2 введена поддержка:

  • Идеологии типов устройств.
  • Значения 'inherit' для всех свойств.
  • Устройств с постраничной разбивкой.
  • Звуковых таблиц стилей.
  • Функций интернационализации, включая стили нумерации списков, поддержку двунаправленного ввода текста и поддержку кавычек для различных языков.
  • Механизмов многоэтапного выбора шрифтов, включая их синтез, загрузку и интеллектуальное сопоставление. Кроме того, введено понятие системных шрифтов, и добавлено новое свойство 'font-size-adjust'.
  • Таблиц, включая новые значения свойств 'display' и 'vertical- align'.
  • Относительного и абсолютного позиционирования, включая фиксированное позиционирование.
  • Новых типов блоков (наряду со структурными и строковыми): компактных и инициирующих.
  • Возможности осуществления контроля над содержимым в модели визуального форматирования: его переполнением, усечением и видимостью.
  • Возможности определения минимальных и максимальных значений ширины и высоты в модели визуального форматирования.
  • Расширенный механизм селекторов, включая селекторы дочерних и смежных элементов, а также селекторы атрибутов.
  • Генерируемого содержимого, автоматической нумерации и счетчиков, а также маркеров.
  • Эффектов затенения текста, доступных благодаря новому свойству 'text-shadow'.
  • Нескольких новых псевдоклассов, таких как :first-child, :hover, :focus и :lang.
  • Системных цветов и шрифтов.
  • Курсоров.
  • Динамических контуров.
Обновленные описания

Спецификация CSS1 была краткой и лаконичной. Настоящая спецификация оказывается более объемной и удобной для чтения. Хотя ее дополнительное содержание большей частью посвящено описанию новых функциональных возможностей, оно, тем не менее, существенно расширяет описание функций CSS1. За исключением некоторых случаев, описанных ниже, переписанные описания не имели никаких изменений ни в синтаксисе, ни в семантике.

Изменения в семантике CSS1

Поскольку все таблицы стилей CSS1 допустимы в CSS2, то в ряде случаев при переводе таблиц стилей из CSS1 в CSS2 они могут принимать иное значение. Большинство изменений в этой спецификации внесено благодаря обратной связи с пользователями, но вместе с этим некоторые модификации были обусловлены наличием ошибок.

  • Была изменена семантика правила "!important". В CSS1 правило "!important" в таблице стилей разработчика имеет более высокий приоритет по сравнению с тем же правилом в пользовательской таблице стилей. В CSS2 все наоборот.
  • В CSS2 значения цветов ограничены цветовой гаммой устройства, а не пространством sRGB, как в CSS1.
  • В CSS1 просто говорилось, что свойство 'margin-right' игнорируется, если обоим свойствам 'margin-left' и 'width' присвоены значения. В CSS2 выбор между тем, какое свойство - 'margin-right' или 'margin-left' - будет игнорироваться, зависит от направления ввода текста.
  • В CSS1 некоторые свойства (например, 'padding') имели значения, задаваемые относительно ширины родительского элемента. Это было ошибкой, т.к. эти значения следовало задавать относительно ширины элемента уровня блока. В связи с этим в настоящей спецификации было введено понятие "контейнер".
  • В CSS2 начальным значением свойства 'display' является 'inline', а не 'block', как в CSS1.
  • В CSS1 свойство 'clear' применялось ко всем элементам, что оказалось ошибкой. В CSS2 данное свойство применяется только к элементам уровня блока.
  • В CSS1 псевдоклассы ':link', ':visited' и ':active' были взаимоисключающими. Теперь в CSS2 псевдокласс ':active' может встречаться вместе с псевдоклассами ':link' или ':visited'.
  • Предложенный коэффициент масштабирования между соседними значениями свойства 'font-size' в таблице размеров шрифтов уменьшен с 1.5 до 1.2.
  • Наследуемым значением свойства 'font-size' теперь является вычисляемое значение, а не фактическое.
  • В CSS1 в описании свойства 'inside' (для 'list-style-position') допускалась ситуация, когда левое поле текста могло изменяться, а позиция маркера нет. В CSS2 это допущение исключено.
  • Обратитесь также к нормативному разделу, посвященному различиям в способах разметки, используемых в CSS1 и CSS2.