Спецификация CSS2 доступна в следующем формате:HTML:http://www.w3.org/TR/1998/REC-CSS2-19980512
и в других форматах на W3C.
В случае разночтений между различными формами спецификации, http://www.w3.org/TR/1998/REC-CSS2-19980512 имеет приоритет.
Английская версия этой спецификации является единственным нормативным документом. Однако переводы этого документа можно найти по адресу http://www.w3.org/Style/css2-updates/translations.html.
Имеются некоторые различия между вышеприведённым синтаксисом и синтаксисом, специфицированным в рекомендациях CSS1 ([CSS1]). Большинство этих отличий - из-за новых понятий в CSS2, которые отсутствовали в CSS1. Другие - из-за того, что грамматика была переписана, чтобы сделать её более читабельной. Однако есть и некоторые несовместимые изменения, которые вызвали бы ошибку в CSS1. Они разъяснены ниже.
Таблицы стилей CSS1 могут быть кодированы только 1-байт-на-символ, как ASCII и ISO-8859-1. CSS2 не имеет таких ограничений. На практике было мало трудностей с экстраполированием сканера CSS1, и некоторые ПА принимали 2-байтное кодирование.
CSS1 допускал только четыре 16-ричных числа после обратного слэша (\) для ссылок на символы Unicode, CSS2 допускает шесть. Кроме того, CSS2 допускает символы пробела в качестве разграничителей escape-последовательностей. Например, в соответствии с CSS1, строка "\abcdef" имеет 3 буквы (\abcd, e и f), а в соответствии с CSS2 - только одну (\abcdef).
Символ табуляции (ASCII 9) в строках не допускается. Однако, поскольку строки в CSS1 использовались только для имён шрифтов и для URL, единственное, что может привести к несовместимости между CSS1 и CSS2, это если таблица стилей содержит семейство шрифтов, имеющее символ табуляции в своём имени.
Также символы новой строки (escape-последовательность с обратным слэшем) не допускались в строках CSS1.
CSS2 разбирает число со следующим непосредственно за ним идентификатором как обозначение DIMEN (т.е. как неизвестный модуль). CSS1 разбирал его как число и как идентификатор. Это означает, что в CSS1 объявление 'font: 10pt/1.2serif' было корректным, а в 'font: 10pt/12pt serif'; в CSS2 требуется пробел перед "serif". (Некоторые ПА принимали первый пример, но не принимали второй.)
В CSS1 имя класса могло начинаться цифрой (".55ft"), если только оно не было размером (".55in").
В CSS2 такие классы разбираются как неизвестные размеры (чтобы позволить в будущем дополнение новых модулей). Чтобы сделать ".55ft" действующим классом, CSS2 требует, чтобы первая цифра была escape (".\55ft")
Определённые значения, такие как метрики ширины, выражаются в единицах, относительных к абстрактному квадрату, чья высота подразумевается как расстояние между строками того же размера, что и размер типа. Этот квадрат называется em-квадрат и является дизайн-решёткой, на которой определяются контуры глифов. Значение этого дескриптора специфицирует, на сколько единиц делится EM-квадрат. Обычными значениями являются, например, 250 (Intellifont), 1000 (Type 1) и 2048 (TrueType, TrueType GX и OpenType).
Если значение не специфицировано, то невозможно определить, что означает какая-либо метрика шрифта. Например, один шрифт имеет глифы нижнего регистра высотой 450, а меньший шрифт имеет высоту 890! Числа в действительности являются дробями; первый шрифт имеет 450/1000, а второй - 890/2048, что в и в самом деле меньше.
Зарегистрированные значения наборов символов. Загрузите список зарегистрированных значений наборов символов с ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets.
"Document Object Model Specification", L. Wood, A. Le Hors, 9 октябрь 1997.
http://www.w3.org/TR/WD-DOM/
ISO/IEC 10179:1996 "Information technology -- Processing languages -- Document Style Semantics and Specification Language (DSSSL)"
Находится на http://occam.sjf.novell.com:8080/dsssl/dsssl96.
"Gamma correction on the Macintosh Platform", C. A. Poynton.
Находится на ftp://ftp.inforamp.net/pub/users/poynton/doc/Mac/Mac_gamma.pdf.
"HTML 3.2 Reference Specification", Dave Raggett, 14 январь 1997.
Находится на http://www.w3.org/TR/REC-html32.html.
http://www.fonts.com/hp/infinifont/moredet.html.
ISO/IEC 9899:1990 Programming languages -- C.
http://www.monotype.com/html/oem/uni_scrmod.html.
"Transparent Content Negotiation in HTTP", K. Holtman, A. Mutz, 9 март, 1997.
http://www.microsoft.com/OpenType/OTSpec/tablist.htm.
Информацию о метриках классификации PANOSE см. на http://www.fonts.com/hp/panose/greybook и следующие главы: Latin Text, Latin Script, Latin Decorative и Latin Pictorial.
Числа Panose для некоторых шрифтов доступны online и могут быть запрошены.
[PANOSE2] См.
http://www.w3.org/Fonts/Panose/pan2.html Panose-2 не ограничен латиницей.
[POSTSCRIPT] "The PostScript Language Reference Manual", Second Edition, Adobe Systems, Inc., Addision-Wesley Publishing Co., декабрь 1990.
"Universal Resource Identifiers in WWW: A Unifying Syntax for the Expression of Names and Addresses of Objects on the Network as used in the World-Wide Web", T. Berners-Lee, июнь 1994.
ftp://ftp.internic.net/rfc/rfc1630.txt.
"Tags for the Identification of Languages", H. Alvestrand, март 1995.
"Colorimetry, Second Edition", CIE Publication 15.2-1986, ISBN 3-900-734-00-3.
Находится на http://www.hike.te.chiba-u.ac.jp/ikeda/CIE/publ/abst/15-2-86.html.
"Cascading Style Sheets, level 1", H. W. Lie and B. Bos, 17 декабря 1996.
Находится на http://www.w3.org/TR/REC-CSS1-961217.html.
"Flex: The Lexical Scanner Generator", Версия 2.3.7, ISBN 1882114213.
"HTML 4.0 Specification", D. Raggett, A. Le Hors, I. Jacobs, 8 июля 1997.
Находится на http://www.w3.org/TR/REC-html40/. В Рекомендациях находятся три Определения Типа Документу (ОТД): Strict/Строгое, Transitional/Переходное и Frameset/Набор Фрэймов, все доступны из Рекомендаций. [IANA]
"Assigned Numbers", STD 2, RFC 1700, USC/ISI, J. Reynolds и J. Postel, октябрь 1994.
Находится на ftp://ftp.internic.net/rfc/rfc1700.txt.
"ICC Profile Format Specification, версия 3.2", 1995.
Находится на ftp://sgigate.sgi.com/pub/icc/ICC32.pdf.
ISO 8879:1986
"Information Processing -- Text and Office Systems -- Standard Generalized Markup Language (SGML)", ISO 8879:1986.
Список мнемоник SGML см. на ftp://ftp.ifi.uio.no/pub/SGML/ENTITIES/. [ISO10646]
"Information Technology - Universal Multiple- Octet Coded Character Set (UCS) - Часть 1: Architecture and Basic Multilingual Plane", ISO/IEC 10646-1:1993. В текущей спецификации принято к рассмотрению также пять поправок к ISO/IEC 10646-1:1993. Полезные документы карта BMP и карта плана 1 указывают, какой скрипт в каких числовых диапазонах размещён. [PNG10]
"PNG (Portable Network Graphics) Specification, Version 1.0 specification", T. Boutell ed., 1 октябрь 1996.
Находится на http://www.w3.org/pub/WWW/TR/REC-png-multi.html.
"Relative Uniform Resource Locators", R. Fielding, июнь 1995.
Находится на ftp://ds.internic.net/rfc/rfc1808.txt.
"Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies", N. Freed and N. Borenstein, ноябрь 1996.
Фантазийные шрифты, как они используются в CSS, прежде всего декоративны, а уже потом содержат представление символов (в противоположность шрифтам Pi или Picture, не представляющим символы).
Примеры:
Латинские шрифты | Alpha Geometrique, Critter, Cottonwood, FB Reactor, Studz |
Фиксированное позиционирование это подкатегория абсолютного позиционирования. Единственное отличие в том, что для фиксированно позиционированного бокса содержащий блок устанавливается портом просмотра.
Для непрерывных носителей
фиксированные боксы не перемещаются при прокрутке документа. В этом смысле они похожи на фиксированные фоновые изображения.
Для страничных носителей
боксы с фиксированной позицией повторяются на каждой странице. Это используется для размещения, к примеру, подписи внизу каждой страницы.
Авторы могут использовать фиксированное позиционирование для создания фрэймоподобных презентаций. Рассмотрим следующую структуру фрэймов:
[D]Этого можно добиться с помощью такого документа HTML и таблицы стилей:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <HTML> <HEAD> <TITLE>Документ с фрэймами в CSS2</TITLE> <STYLE type="text/css"> BODY { height: 8.5in } /* Необходим далее для процентной высоты */ #header { position: fixed; width: 100%; height: 15%; top: 0; right: 0; bottom: auto; left: 0; } #sidebar { position: fixed; width: 10em; height: auto; top: 15%; right: auto; bottom: 100px; left: 0; } #main { position: fixed; width: auto; height: auto; top: 15%; right: 0; bottom: 100px; left: 10em; } #footer { position: fixed; width: 100%; height: 100px; top: auto; right: 0; bottom: 0; left: 0; } </STYLE> </HEAD> <BODY> <DIV id="header"> ... </DIV> <DIV id="sidebar"> ... </DIV> <DIV id="main"> ... </DIV> <DIV id="footer"> ... </DIV> </BODY> </HTML>
Авторы могут специфицировать фон элемента (т.е. его видимую поверхность) как цвет или как изображение. В терминах модели бокса, "background" относится к фону содержимого и области заполнения. Цвет и стиль обрамления устанавливаются в свойствах обрамления. Поля всегда прозрачны, поэтому фон бокса-предка всегда просвечивает.
Свойства фона не наследуются, но фон бокса-предка будет по умолчанию просвечивать, поскольку начальное значение 'background-color' - 'transparent'.
Фон бокса, генерируемый корневым элементом, покрывает всю канву.
Для документов HTML, однако, мы рекомендуем, чтобы авторы специфицировали фон элемента BODY, а не элемента HTML.
ПА должны учитывать следующие правила приоритета при заполнении фона: если значение свойства 'background' для элемента HTML отлично от 'transparent', тогда используйте его, в ином случае - используйте значение свойства 'background'
элемента BODY. Если результирующее значение - 'transparent', то представление не определено.
В соответствии с этими правилами, канва следующего документа HTML будет иметь фон "marble":
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <HTML> <HEAD> <TITLE>Установка фона канвы</TITLE> <STYLE type="text/css"> BODY { background: url("http://style.com/marble.png") } </STYLE> </HEAD> <BODY> <P>Мой фон - marble. </BODY> </HTML>
Разрыв страницы обязан возникнуть в (1), если среди свойств 'page-break-after' и 'page-break-before'
всех элементов, генерирующих боксы у данного поля, имеется по меньшей мере одно со значением 'always', 'left' или 'right'.
Разрыв страницы обязан появиться в (1), если последний строчный бокс выше этого поля и первый бокс - ниже него не имеют одинакового значения для 'page'.
Поскольку высота инлайн-бокса может отличаться от размера шрифта текста бокса (например, 'line-height' > 1em), может иметься некоторое пространство сверху и снизу от выводимых глифов. Разница между размером шрифта и вычисленным значением 'line-height' называется leading\габарит. Половина габарита называется полугабарит.
ПА центрирует глифы по вертикали в инлайн-боксе, добавляя полугабарит сверху и снизу. Например, если блок текста имеет высоту '12pt' и значение 'line-height' - '14pt', должно быть добавлено 2pts дополнительного пространства: 1pt сверху и 1pt снизу от букв. (Это применимо также и к пустым боксам, как если бы пустой бокс содержал бесконечно узкую букву.)
Если значение 'line-height'
меньше размера шрифта, окончательная высота инлайн-бокса будет меньше, чем размер шрифта, и выводимые глифы будут "просачиваться" за пределы бокса. Если такой бокс касается края строчного бокса, выводимые глифы будут также "просачиваться" в смежный строчный бокс.
Хотя поля, рамки и заполнение незамещаемых элементов не учитываются при подсчёте высоты инлайн-бокса (и, следовательно, высоты строчного бокса), они всё же отображаются вокруг инлайн-боксов. Это значит, что если высота строчного бокса короче внешних краёв
содержащихся в нём боксов, то фон и цвета заполнения и рамок могут "просачиваться" в смежные строчные боксы. Однако в этом случае некоторые ПА могут использовать строчный бокс для "обрезки" областей заполнения и рамок (т.е. - не выводить их).
Значение: | normal | <number> | <length> | <percentage> | inherit |
Начальное: | normal |
Применяется: | ко всем элементам |
Наследуется: | да |
Процентное: | относительно размера шрифта самого элемента |
Носитель: | визуальный |
Если это свойство установлено в элементе уровня блока, который (элемент) имеет содержимое, составленное из элементов инлайн-уровня, оно специфицирует минимальную высоту каждого генерируемого инлайн-бокса.
Если это свойство установлено в элементе инлайн-уровня, оно специфицирует точную высоту каждого бокса, генерируемого элементом (за исключением замещаемых инлайн-элементов, когда высота бокса задаётся свойством 'height').
Значение: | baseline | sub | super | top | text-top | middle | bottom | text-bottom | <percentage> | <length> | inherit |
Начальное: | baseline |
Применяется: | к инлайн-элементам и элементам 'table-cell' |
Наследуется: | нет |
Процентное: | относительно 'line-height' самого элемента |
Носитель: | визуальный |
Содержание
12.1 Псевдоэлементы :before и :after
12.2 Свойство 'content'
12.3 Взаимодействие :before и :after с элементами 'compact' и 'run-in'
12.4 Знаки кавычек
12.4.1 Спецификация кавычек свойством 'quotes'
12.4.2 Вставка кавычек с применением свойства 'content'
12.5 Автоматические счётчики и нумерация
12.5.1 Вложение счётчиков и область видимости
12.5.2 Стили счётчиков
12.5.3 Счётчики в элементах с 'display: none'
12.6 Маркировка и списки
12.6.1 Маркировка: свойство 'marker-offset'
12.6.2 Списки: свойства 'list-style-type', 'list-style-image', 'list-style-position' и 'list-style'
В некоторых случаях бывает необходимо, чтобы пользовательские агенты (ПА) отображали содержимое не из дерева документа. Известный пример - нумерованный список: автор не хочет, чтобы нумерация выводилась явным образом, он или она хотят, чтобы ПА генерировал нумерацию автоматически. Также автор может пожелать, чтобы ПА вставлял слово "Figure" перед заглавием или фигурой или "Chapter 7" в начале 7 главы. В особенности для аудио и брайль-носителей, ПА должны иметь возможность вставить эти строки.
В CSS2 содержимое может генерироваться с помощью различных механизмов:
Свойство 'content'
в сочетании с псевдоэлементами :before и :after. Звуковые свойства 'cue-before'
и 'cue-after'
(см. главу звуковые таблицы стилей). Если свойство 'content' комбинируется со звуковыми свойствами, то они выводятся в следующем порядке: :before, 'cue-before', ('pause-before'), содержимое элемента, ('pause-after'), 'cue-after'
и :after. Элементы со значением 'list-item' для свойства 'display'.
Ниже описаны механизмы, ассоциированные со свойством 'content'.
Горизонтальное выравнивание содержимого ячейки в боксе ячейки специфицируется свойством 'text-align'.
Если значение свойства 'text-align'
для более чем одной ячейки в столбце установлено в<string>, содержимое этих ячеек выравнивается вдоль вертикальной оси. Начало строки касается этой оси. Направление письма определяет, расположена строка слева или справа от оси.
Выравнивание текста таким способом возможно только тогда, когда текст входит на одну строку. Результат не определён, если содержимое ячейки занимает более одной строки.
Если значение 'text-align'
ячейки таблицы это строка, но строка не появляется в содержимом ячейки, то конец содержимого ячейки соприкасается с вертикальной осью выравнивания.
Заметьте, что строки не должны быть теми же самыми для каждой ячейки, хотя, как правило, это и так.
CSS не предоставляет способа специфицировать смещение оси вертикального выравнивания относительно края бокса столбца.
Пример(ы):
Следующая таблица стилей:
TD { text-align: "." } TD:before { content: "$" }
создаст столбец знаков доллара в следующей таблице HTML:
<TABLE> <COL width="40"> <TR> <TH>Long distance calls <TR> <TD> 1.30 <TR> <TD> 2.50 <TR> <TD> 10.80 <TR> <TD> 111.01 <TR> <TD> 85. <TR> <TD> 90 <TR> <TD> .05 <TR> <TD> .06 </TABLE>
для выравнивания десятичной точки. Шутки ради, мы использовали псевдоэлемент :before для того, чтобы вставить знак доллара перед каждым значением. Таблица может выглядеть так:
Long distance calls $1.30 $2.50 $10.80 $111.01 $85. $90 $.05 $.06
Значение: | once | always | inherit |
Начальное: | once |
Применяется: | к элементам. имеющим информацию "шапки" таблицы |
Наследуется: | да |
Процентное: | N/A |
Носитель: | звуковой |
Это свойство специфицирует, произносятся ли заголовки перед каждой ячейкой (данных), или только перед той ячейкой, которая ассоциирована с другим заголовком.
Значения имеют следующий смысл:
once
Заголовок произносится однократно перед серией ячеек. always
Заголовок произносится перед каждой подходящей ячейкой.
Каждый язык документов может иметь различные механизмы спецификации заголовков. Например, в HTML 4.0 ([HTML40]) можно специфицировать заголовочную информацию тремя различными атрибутами ("headers", "scope" и "axis"), и спецификация предоставляет алгоритм для определения заголовочной информации, когда эти атрибуты не специфицированы.
[D]Изображение таблицы с заголовочными ячейками ("San Jose" и "Seattle"), которые не находятся в одном столбце или ряде с данными, к которым они относятся.
Этот пример HTML представляет денежный расчёт расходов на питание, гостиницу и транспорт в двух местах (San Jose и Seattle) на несколько дней. Концептуально Вы можете представлять таблицу в терминах n-размерного пространства. Заголовками этого пространства являются: место, день, категория и итог. Некоторые ячейки определяют метки вдоль оси, а другие дают подсчёт денег в точке данного пространства. Вот разметка для этой таблицы:
<TABLE> <CAPTION>Travel Expense Report</CAPTION> <TR> <TH></TH> <TH>Meals</TH> <TH>Hotels</TH> <TH>Transport</TH> <TH>subtotal</TH> </TR> <TR> <TH id="san-jose" axis="san-jose">San Jose</TH> </TR> <TR> <TH headers="san-jose">25-Aug-97</TH> <TD>37.74</TD> <TD>112.00</TD> <TD>45.00</TD> <TD></TD> </TR> <TR> <TH headers="san-jose">26-Aug-97</TH> <TD>27.28</TD> <TD>112.00</TD> <TD>45.00</TD> <TD></TD> </TR> <TR> <TH headers="san-jose">subtotal</TH> <TD>65.02</TD> <TD>224.00</TD> <TD>90.00</TD> <TD>379.02</TD> </TR> <TR> <TH id="seattle" axis="seattle">Seattle</TH> </TR> <TR> <TH headers="seattle">27-Aug-97</TH> <TD>96.25</TD> <TD>109.00</TD> <TD>36.00</TD> <TD></TD> </TR> <TR> <TH headers="seattle">28-Aug-97</TH> <TD>35.00</TD> <TD>109.00</TD> <TD>36.00</TD> <TD></TD> </TR> <TR> <TH headers="seattle">subtotal</TH> <TD>131.25</TD> <TD>218.00</TD> <TD>72.00</TD> <TD>421.25</TD> </TR> <TR> <TH>Totals</TH> <TD>196.27</TD> <TD>442.00</TD> <TD>162.00</TD> <TD>800.27</TD> </TR> </TABLE>
Представляя модель данных таким образом, авторы дают возможность браузерам с синтезом речи работать с таблицей различными способами, например, каждая ячейка может проговариваться как список с повторением соответствующих заголовков перед каждой ячейкой данных:
San Jose, 25-Aug-97, Meals: 37.74 San Jose, 25-Aug-97, Hotels: 112.00 San Jose, 25-Aug-97, Transport: 45.00 ...
Браузер может также проговаривать ячейки, только если они изменяются:
San Jose, 25-Aug-97, Meals: 37.74 Hotels: 112.00 Transport: 45.00 26-Aug-97, Meals: 27.28 Hotels: 112.00 ...
Если несколько селекторов используют общие объявления, то они могут быть сгруппированы в список с разделением запятыми.
Пример(ы):
Здесь три правила с идентичными объявлениями собраны в одно. Таким образом,
H1 { font-family: sans-serif } H2 { font-family: sans-serif } H3 { font-family: sans-serif }
эквивалентно:
H1, H2, H3 { font-family: sans-serif }
CSS предлагает также другие механизмы "сокращений", включая множественные объявления
и сокращённые свойства.
Каждое определение свойства CSS специфицирует типы носителя, для которых свойство обязано выполняться на соответствующих ПА. Поскольку свойства обычно применяются для различных носителей, раздел "Применяется: " каждого определения свойства перечисляет группы носителей, а не отдельные типы носителей. Каждое свойство применяется ко всем типам носителя группы, указанной в определении свойства.
CSS2 определяет следующие группы носителей:
непрерывные
или страничные. "Оба" означает, что свойство применяется к обеим группам носителей. визуальные, звуковые или осязательные. решётка (для устройств с решётками символов) или растровые. "Оба" означает, что свойство применяется к обеим группам носителей. интерактивные (для устройств, взаимодействующих с пользователем или статичные (для не взаимодействующих). "Оба" означает, что свойство применяется к носителям обеих групп. все
(включает все типы носителей).
В следующей таблице показаны соотношения между группами носителей и типами носителя:
непрерывный | звуковой | N/A | оба |
непрерывный | осязательный | решётка | оба |
страничный | осязательный | решётка | оба |
оба | визуальный | оба | оба |
страничный | визуальный | растровый | статичный |
страничный | визуальный | растровый | статичный |
непрерывный | визуальный | растровый | оба |
непрерывный | визуальный | решётка | оба |
оба | визуальный, звуковой | растровый | оба |
Обозначает группы носителей, к которым свойство применяется. Условия соответствия определяют, что ПА обязаны поддерживать это свойство, если они поддерживают представление в типах носителя, включённых в эти группы носителей.
Специфицирует ту часть имени шрифта, где указывается имя семейства данного шрифта. Например, имя семейства для Helvetica-Bold - Helvetica, имя семейства для ITC Stone Serif Semibold Italic - ITC Stone Serif. Некоторые системы рассматривают "украшения", относящиеся к сжатию или расширению как часть имени семейства.
Русский алфавит: Английский Алфавит
А Б В Г Д Е З И К Л М Н О П Р С Т У Ф Ц Ч Ш Э Я
А
абсолютные размеры, 1
абсолютно позиционированный элемент, 1
абстрактный глиф, 1
автоматическая нумерация, 1
авторская утилита, 1
анонимный, 1
анонимные инлайн-боксы, 1
аспект, значение, 1
at-правило, 1
at-правила, 1, 2
атрибут, 1 Русский Алфавит
Б
блок, 1
блок объявлений, 1
бокс
run-in, 1
высота, 1
высота содержимого, 1
заполнение, 1
переполнение, 1
поля, 1
рамка, 1
содержимое, 1
ширина, 1
ширина содержимого, 1
бокс блока, 1
основной, 1 Русский Алфавит
В
вектор кодирования, 1
вертикальные поля, 1
'визуальный', группа носителей, 1
внешний край, 1
внутренние размеры, 1
внутренний край, 1
вперёд-совместимый разбор, 1
выводимое содержимое, 1
вычисленное значение, 1 Русский Алфавит
'ascent' | <number> | не определено |
'baseline' | <number> | 0 |
'bbox' | <number>, <number>, <number>, <number> | не определено |
'cap-height' | <number> | не определено |
'centerline' | <number> | не определено |
'definition-src' | <uri> | не определено |
'descent' | <number> | не определено |
'font-family' | [ <family-name> | <generic-family> ] [, [<family-name> | <generic-family> ]]* | зависит от пользовательского агента |
'font-size' | all | <length> [, <length>]* | all |
'font-stretch' | all | [ normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded ] [, [ normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded] ]* | normal |
'font-style' | all | [ normal | italic | oblique ] [, [normal | italic | oblique] ]* | all |
'font-variant' | [normal | small-caps] [,[normal | small-caps]]* | normal |
'font-weight' | all | [normal | bold | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900] [, [normal | bold | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900]]* | all |
'mathline' | <number> | не определено |
'panose-1' | [<integer>]{10} | 0 0 0 0 0 0 0 0 0 0 |
'slope' | <number> | 0 |
'src' | [ <uri> [format(<string> [, <string>]*)] | <font-face-name> ] [, <uri> [format(<string> [, <string>]*)] | <font-face-name> ]* | не определено |
'stemh' | <number> | не определено |
'stemv' | <number> | не определено |
'topline' | <number> | не определено |
'unicode-range' | <urange> [, <urange>]* | U+0-7FFFFFFF |
'units-per-em' | <number> | не определено |
'widths' | [<urange> ]? [<number> ]+ [,[<urange> ]? <number> ]+] | не определено |
'x-height' | <number> | не определено |
'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-color' | <color> | transparent | inherit | transparent | нет | визуальный | ||
'background-image' | <uri> | none | inherit | none | нет | визуальный | ||
'background-position' | [ [<percentage> | <length> ]{1,2} | [ [top | center | bottom] || [left | center | right] ] ] | inherit | 0% 0% | к элементам уровня блока и к замещаемым элементам | нет | относительно размеров самого бокса | визуальный |
'background-repeat' | repeat | repeat-x | repeat-y | no-repeat | inherit | repeat | нет | визуальный | ||
'border' | [ 'border-width' || 'border-style' || <color> ] | inherit | см. индивидуальные свойства | нет | визуальный | ||
'border-collapse' | collapse | separate | inherit | collapse | к элементам '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 | см. индивидуальные свойства | нет | визуальный | ||
'border-top-color'
'border-right-color' 'border-bottom-color' 'border-left-color' |
<color> | inherit | значение свойства 'color' | нет | визуальный | ||
'border-top-style'
'border-right-style' 'border-bottom-style' 'border-left-style' |
<border-style> | inherit | none | нет | визуальный | ||
'border-top-width'
'border-right-width' 'border-bottom-width' 'border-left-width' |
<border-width> | inherit | medium | нет | визуальный | ||
'border-width' | <border-width>{1,4} | inherit | см. индивидуальные свойства | нет | визуальный | ||
'bottom' | <length> | <percentage> | auto | inherit | auto | к позиционированным элементам | нет | относительно высоты содержащего блока | визуальный |
'caption-side' | top | bottom | left | right | inherit | top | к элементам 'table-caption' | да | визуальный | |
'clear' | none | left | right | both | inherit | none | к элементам уровня блока | нет | визуальный | |
'clip' | <shape> | auto | inherit | auto | к элементам уровня блока и к замещаемым элементам | нет | визуальный | |
'color' | <color> | inherit | зависит от ПА | да | визуальный | ||
'content' | [ <string> | <uri> | <counter> | attr(X) | open-quote | close-quote | no-open-quote | no-close-quote ]+ | inherit | пустая строка | к псевдоэлементам :before и :after | нет | визуальный | |
'counter-increment' | [ <identifier> <integer>? ]+ | none | inherit | none | нет | визуальный | ||
'counter-reset' | [ <identifier> <integer>? ]+ | none | inherit | none | нет | визуальный | ||
'cue' | [ 'cue-before' || 'cue-after' ] | inherit | XX | нет | звуковой | ||
'cue-after' | <uri> | none | inherit | none | нет | звуковой | ||
'cue-before' | <uri> | none | inherit | none | нет | звуковой | ||
'cursor' | [ [<uri> ,]* [ auto | crosshair | default | pointer | move | e-resize | ne-resize | nw-resize | n-resize | se-resize | sw-resize | s-resize | w-resize| text | wait | help ] ] | inherit | auto | да | визуальный, интерактивный | ||
'direction' | ltr | rtl | inherit | ltr | ко всем элементам, но см. др. информацию | да | визуальный | |
'display' | inline | block | list-item | run-in | compact | marker | table | inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption | none | inherit | inline | нет | все | ||
'elevation' | <angle> | below | level | above | higher | lower | inherit | level | да | звуковой | ||
'empty-cells' | show | hide | inherit | show | к элементам 'table-cell' | да | визуальный | |
'float' | left | right | none | inherit | none | ко всем непозиционированным элементам и генерируемому содержимому | нет | визуальный | |
'font' | [ [ 'font-style' || 'font-variant' || 'font-weight' ]? 'font-size' [ / 'line-height' ]? 'font-family' ] | caption | icon | menu | message-box | small-caption | status-bar | inherit | см. индивидуальные свойства | да | допускается в 'font-size' и 'line-height' | визуальный | |
'font-family' | [[ <family-name> | <generic-family> ],]* [<family-name> | <generic-family>] | inherit | зависит от ПА (пользовательского агента) | да | визуальный | ||
'font-size' | <absolute-size> | <relative-size> | <length> | <percentage> | inherit | medium | да, вычисляемое значение наследуется | относительно размера шрифта родительского элемента | визуальный | |
'font-size-adjust' | <number> | none | inherit | none | да | визуальный | ||
'font-stretch' | normal | wider | narrower | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded | inherit | normal | да | визуальный | ||
'font-style' | normal | italic | oblique | inherit | normal | да | визуальный | ||
'font-variant' | normal | small-caps | inherit | normal | да | визуальный | ||
'font-weight' | normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit | normal | да | визуальный | ||
'height' | <length> | <percentage> | auto | inherit | auto | ко всем элементам, кроме незамещаемых инлайн-элементов, столбцов таблиц и групп столбцов | нет | см. дополнительную информацию | визуальный |
'left' | <length> | <percentage> | auto | inherit | auto | к позиционированным элементам | нет | относительно ширины содержащего блока | визуальный |
'letter-spacing' | normal | <length> | inherit | normal | да | визуальный | ||
'line-height' | normal | <number> | <length> | <percentage> | inherit | normal | да | относительно размера шрифта этого элемента | визуальный | |
'list-style' | [ 'list-style-type' || 'list-style-position' || 'list-style-image' ] | inherit | XX | к элементам с 'display: list-item' | да | визуальный | |
'list-style-image' | <uri> | none | inherit | none | к элементам с 'display: list-item' | да | визуальный | |
'list-style-position' | inside | outside | inherit | outside | к элементам с 'display: list-item' | да | визуальный | |
'list-style-type' | disc | circle | square | decimal | decimal-leading-zero | lower-roman | upper-roman | lower-greek | lower-alpha | lower-latin | upper-alpha | upper-latin | hebrew | armenian | georgian | cjk-ideographic | hiragana | katakana | hiragana-iroha | katakana-iroha | none | inherit | disc | к элементам с 'display: list-item' | да | визуальный | |
'margin' | <margin-width>{1,4} | inherit | XX | нет | относительно ширины содержащего блока | визуальный | |
'margin-top'
'margin-right' 'margin-bottom' 'margin-left' |
<margin-width> | inherit | 0 | нет | относительно ширины содержащего блока | визуальный | |
'marker-offset' | <length> | auto | inherit | auto | к элементам с 'display: marker' | нет | визуальный | |
'marks' | [ crop || cross ] | none | inherit | none | к контексту страницы | N/A | визуальный, страничный | |
'max-height' | <length> | <percentage> | none | inherit | none | ко всем элементам, кроме незамещаемых инлайн-элементов и элементов таблицы | нет | относительно высоты содержащего блока | визуальный |
'max-width' | <length> | <percentage> | none | inherit | none | ко всем элементам, кроме незамещаемых инлайн-элементов и элементов таблицы | нет | относительно ширины содержащего блока | визуальный |
'min-height' | <length> | <percentage> | inherit | 0 | ко всем элементам, кроме незамещаемых инлайн-элементов и элементов таблицы | нет | относительно высоты содержащего блока | визуальный |
'min-width' | <length> | <percentage> | inherit | зависит от ПА | ко всем элементам, кроме незамещаемых инлайн-элементов и элементов таблицы | нет | относительно ширины содержащего блока | визуальный |
'orphans' | <integer> | inherit | 2 | к элементам уровня блока | да | визуальный, страничный | |
'outline' | [ 'outline-color' || 'outline-style' || 'outline-width' ] | inherit | см. индивидуальные свойства | нет | визуальный, интерактивный | ||
'outline-color' | <color> | invert | inherit | invert | нет | визуальный, интерактивный | ||
'outline-style' | <border-style> | inherit | none | нет | визуальный, интерактивный | ||
'outline-width' | <border-width> | inherit | medium | нет | визуальный, интерактивный | ||
'overflow' | visible | hidden | scroll | auto | inherit | visible | к элементам уровня блока и к замещаемым | нет | визуальный | |
'padding' | <padding-width>{1,4} | inherit | XX | нет | относительно ширины содержащего блока | визуальный | |
'padding-top'
'padding-right' 'padding-bottom' 'padding-left' |
<padding-width> | inherit | 0 | нет | относительно ширины содержащего блока | визуальный | |
'page' | <identifier> | auto | auto | к элементам уровня блока | да | визуальный, страничный | |
'page-break-after' | auto | always | avoid | left | right | inherit | auto | к элементам уровня блока | нет | визуальный, страничный | |
'page-break-before' | auto | always | avoid | left | right | inherit | auto | к элементам уровня блока | нет | визуальный, страничный | |
'page-break-inside' | avoid | auto | inherit | auto | к элементам уровня блока | да | визуальный, страничный | |
'pause' | [ [<time> | <percentage>]{1,2} ] | inherit | зависит от ПА | нет | см. описание 'pause-before' и 'pause-after' | звуковой | |
'pause-after' | <time> | <percentage> | inherit | зависит от ПА | нет | см. дополнительную информацию | звуковой | |
'pause-before' | <time> | <percentage> | inherit | зависит от ПА | нет | см. дополнительную информацию | звуковой | |
'pitch' | <frequency> | x-low | low | medium | high | x-high | inherit | medium | да | звуковой | ||
'pitch-range' | <number> | inherit | 50 | да | звуковой | ||
'play-during' | <uri> mix? repeat? | auto | none | inherit | auto | нет | звуковой | ||
'position' | static | relative | absolute | fixed | inherit | static | ко всем элементам, кроме тех, которые генерируют содержимое | нет | визуальный | |
'quotes' | [<string> <string>]+ | none | inherit | зависит от ПА | да | визуальный | ||
'richness' | <number> | inherit | 50 | да | звуковой | ||
'right' | <length> | <percentage> | auto | inherit | auto | к позиционированным элементам | нет | относительно ширины содержащего блока | визуальный |
'size' | <length>{1,2} | auto | portrait | landscape | inherit | auto | к контексту страницы | N/A | визуальный, страничный | |
'speak' | normal | none | spell-out | inherit | normal | да | звуковой | ||
'speak-header' | once | always | inherit | once | к элементам, имеющим информацию "шапки" | да | звуковой | |
'speak-numeral' | digits | continuous | inherit | continuous | да | звуковой | ||
'speak-punctuation' | code | none | inherit | none | да | звуковой | ||
'speech-rate' | <number> | x-slow | slow | medium | fast | x-fast | faster | slower | inherit | medium | да | звуковой | ||
'stress' | <number> | inherit | 50 | да | звуковой | ||
'table-layout' | auto | fixed | inherit | auto | к 'table' и 'inline-table' | нет | звуковой | |
'text-align' | left | right | center | justify | <string> | inherit | зависит от ПА и направления письма | к элементам уровня блока | да | визуальный | |
'text-decoration' | none | [ underline || overline || line-through || blink ] | inherit | none | нет (см. дополнительную информацию) | визуальный | ||
'text-indent' | <length> | <percentage> | inherit | 0 | к элементам уровня блока | да | относительно ширины содержащего блока | визуальный |
'text-shadow' | none | [<color> || <length> <length> <length>? ,]* [<color> || <length> <length> <length>?] | inherit | none | нет (см. дополнительную информацию) | визуальный | ||
'text-transform' | capitalize | uppercase | lowercase | none | inherit | none | да | визуальный | ||
'top' | <length> | <percentage> | auto | inherit | auto | к позиционированным элементам | нет | относительно высоты содержащего блока | визуальный |
'unicode-bidi' | normal | embed | bidi-override | inherit | normal | ко всем элементам, но см. др. информацию | нет | визуальный | |
'vertical-align' | baseline | sub | super | top | text-top | middle | bottom | text-bottom | <percentage> | <length> | inherit | baseline | к элементам инлайн уровня и к 'table-cell' | нет | относительно 'line-height' самого элемента | визуальный |
'visibility' | visible | hidden | collapse | inherit | inherit | нет | визуальный | ||
'voice-family' | [[<specific-voice> | <generic-voice> ],]* [<specific-voice> | <generic-voice> ] | inherit | зависит от ПА | да | звуковой | ||
'volume' | <number> | <percentage> | silent | x-soft | soft | medium | loud | x-loud | inherit | medium | да | относительно унаследованного значения | звуковой | |
'white-space' | normal | pre | nowrap | inherit | normal | к элементам уровня блока | да | визуальный | |
'widows' | <integer> | inherit | 2 | к элементам уровня блока | да | визуальный, страничный | |
'width' | <length> | <percentage> | auto | inherit | auto | ко всем элементам, кроме незамещаемых инлайн-элементов, столбцов таблиц и групп столбцов | нет | относительно ширины содержащего блока | визуальный |
'word-spacing' | normal | <length> | inherit | normal | да | визуальный | ||
'z-index' | auto | <integer> | inherit | auto | к позиционированным элементам | нет | визуальный |
Инлайн-элементы это те элементы документа-источника, которые не образуют новых блоков содержимого; содержимое определяется в строке (на месте) (например, выделенные участки текста внутри параграфа, инлайн-изображения и т.п.). Различные значения свойства 'display' делают элемент инлайн: 'inline', 'inline-table', 'compact' и 'run-in' (не всегда; см. компактные и втягивающиеся боксы). Элементы инлайн-уровня (встроенные) генерируют инлайн-боксы.
Инлайн-боксы могут принимать участие в различных контекстах форматирования:
Внутри бокса блока инлайн-бокс участвует в инлайн-контексте форматирования. Инлайн-бокс compact расположен в поле бокса блока. Боксы-маркёры имеют позицию также вне бокса блока.
Свойство 'width' не применяется. Специфицированное значение 'auto' для 'left', 'right', 'margin-left' или 'margin-right' становится вычисленным значением '0'.
Если 'top', 'bottom', 'margin-top' или 'margin-bottom' установлены в 'auto', их вычисленное значение будет '0'. Свойство 'height' не применяется, но высота бокса задаётся свойством 'line-height'.
Специфицированное значение 'auto' для 'left', 'right', 'margin-left' или 'margin-right' становится вычисленным значением '0'. Специфицированное значение 'auto' для 'width' даёт внутреннюю ширину элемента как вычисленное значение.
Если 'top', 'bottom', 'margin-top' или 'margin-bottom' установлены в 'auto', их вычисленное значение будет '0'. Если 'height' - 'auto', вычисленное значение будет внутренней
высотой.
Содержание
18.1 Курсоры: свойство 'cursor'
18.2 Предпочтительные цвета пользователя
18.3 Предпочтительные шрифты пользователя
18.4 Динамические контуры: свойство 'outline'
18.4.1 Контуры и фокус
18.5 Увеличение
Значение: | <identifier> | auto |
Начальное: | auto |
Применяется: | к элементам уровня блока |
Наследуется: | да |
Процентное: | N/A |
Носитель: | визуальный, страничный |
Свойство 'page' можно использовать для спецификации определённого типа страницы, на которой элемент должен быть выведен.
Пример(ы):
Все таблицы будут размещены на правой стороне страницы с ориентацией landscape:
@page rotated {size: landscape} TABLE {page: rotated; page-break-before: right}
Свойство 'page' работает так: если бокс блока с инлайн-содержимым имеет свойство 'page', отличное от аналогичного свойства предшествующего бокса блока с инлайн-содержимым, тогда один или два разрыва страницы вставляются между ними, и боксы после разрыва отображаются в страничном боксе именованного типа. См. ниже "Форсированные разрывы страниц".
Пример(ы):
В этом примере две таблицы отображаются на landscape-страницах (или на одной странице, если входят), и тип страницы "narrow" вообще не используется, вопреки установкам в DIV:
@page narrow {size: 9cm 18cm} @page rotated {size: landscape} DIV {page: narrow} TABLE {page: rotated}
с этим документом:
<DIV> <TABLE>...</TABLE> <TABLE>...</TABLE> </DIV>
Большинство изображений в электронной версии данной спецификации сопровождаются "полными описаниями" того, что изображено. Ссылка на полное описание обозначена "[D]" справа от изображения.
Изображения и полные описания являются исключительно информативными.
В CSS имена свойств, дескрипторов и псевдоклассов ограничиваются одиночными кавычками. Значения в CSS ограничиваются одиночными кавычками. Элементы языка документа записываются буквами в верхнем регистре. Имена атрибутов языка документа записываются в нижнем регистре и ограничиваются двойными кавычками.
Элементы уровня блока
это элементы документа-источника, визуально отформатированные как блоки (например, параграфы). Различные значения свойства 'display' создают элемент уровня блока: 'block', 'list-item', 'compact', 'run-in' (не всегда; см. компактные и втягивающиеся
боксы) и 'table'.
Элементы уровня блока генерируют основной бокс блока, и только он содержит боксы блоков. Основной бокс блока устанавливает содержащий блок для боксов-потомков и сгенерированного содержимого и является также боксом, участвующим в любой схеме позиционирования. Основные боксы блока действуют в контексте форматирования блока.
Некоторые элементы уровня блока генерируют дополнительные боксы за пределами основного бокса: элементы 'list-item' и элементы с маркёрами. Эти дополнительные боксы размещаются относительно основного бокса.
Данная спецификация написана в расчёте на читателей двух типов: CSS-авторов и CSS-разработчиков. Мы надеемся, что эта спецификация снабдит авторов средствами, необходимыми для создания эффективных, привлекательных и доступных документов без излишнего углубления в детали реализации CSS. Разработчики к тому же смогут найти всё необходимое для создания соответствующих пользовательских агентов (ПА).
Спецификация начинается общим представлением CSS и постепенно всё более углубляется в технические подробности и специфику. Для быстрого доступа к информации служат общие и специализированные оглавления в начале каждого раздела и индексы - в электронном и печатном виде.
Спецификация создана в расчёте на два типа представления: электронное и печатное. Хотя эти два типа, без сомнения, похожи, читатели могут заметить и некоторые отличия. Например, ссылки не будут работать в печатной версии (естественно), а номера страниц будут отсутствовать в электронной версии. В случае возникновения противоречий, электронная версия должна считаться определяющей.
Эта спецификация содержит следующие разделы: Раздел 2: Введение в CSS2
Введение содержит краткий учебник по CSS2 и обсуждение принципов дизайна вне CSS2.
Раздел 3 - 20: Справочник-учебник CSS2
Основу составляет справочник языка CSS2. Этот справочник определяет, что может входить в таблицы стилей CSS2 (синтаксис, свойства, значения свойств) и как ПА обязаны интерпретировать эти таблицы стилей, чтобы претендовать на соответствие.
Приложения:
Содержат образцы таблиц стилей для HTML 4.0, изменения относительно CSS1, замечания по реализации и выполнению, грамматике CSS2, список нормативных и информативных ссылок
и три индекса: Свойства, Дескрипторы и Общий индекс.
Для всех носителей термин канва описывает "пространство, где выводится сформатированная структура". Канва бесконечна по каждому измерению, но представление обычно производится в пределах ограниченной области канвы, установленной ПА в соответствии с целевым носителем. Например, вывод ПАгентами на экран обычно требует наличия минимальной ширины и выбора начальной ширины на базе размеров порта просмотра. Вывод ПАгентами на страницу обычно требует ограничения ширины и высоты. Звуковые ПА могут предполагать ограничения звукового пространства, но не времени.
Значение: | capitalize | uppercase | lowercase | none | inherit |
Начальное: | none |
Применяется: | ко всем элементам |
Наследуется: | да |
Процентное: | N/A |
Носитель: | визуальный |
Это свойство управляет эффектами капитализации текста элемента.
Значения имеют следующий смысл:
capitalize
Переводит первый символ каждого слова в верхний регистр. uppercase
Переводит все символы каждого слова в верхний регистр. lowercase
Переводит все символы каждого слова в нижний регистр. none
Нет эффектов капитализации.
Реальная трансформация зависит в каждом конкретном случае от языка письма. См. о способах определения языка элемента в RFC 2070 ([RFC2070]).
Соответствующие ПА
могут рассматривать значение 'text-transform' как 'none' для тех символов, которые не входят в репертуар Latin-1, и для элементов на тех языках, в которых трансформация отличается от трансформации, специфицированной таблицей конвертации регистров для ISO 10646 ([ISO10646]).
Пример(ы):
Здесь весь текст в элементе H1 переводится в верхний регистр. H1 { text-transform: uppercase }
Таблицы стилей могут иметь три независимых источника: автор, пользователь и ПА.
Автор. Специфицирует таблицы стилей для документа-источника в соответствии с соглашениями о языке документа. К примеру, в HTML таблицы стилей могут быть включены в документ или иметь внешнюю связь.
Пользователь. Может иметь возможность специфицировать стилевую информацию для определённого документа. Например, пользователь может специфицировать файл, содержащий таблицу стилей, или ПА может предоставить интерфейс, генерирующий пользовательскую таблицу стилей (или вести себя так, как если бы предоставлял).
Пользовательский агент. Соответствующие ПА
обязаны применять таблицу стилей по умолчанию
(или вести себя так, как если бы применяли) до того, как применять к документу все другие таблицы стилей. Таблицы стилей по умолчанию в ПАгенте должны представить элементы языка документа теми способами, которые удовлетворяют общим ожиданиям для языка документа (например, для визуальных браузеров, элемент EM в HTML представляется шрифтом italic). См. "Образец таблицы стилей HTML 4.0" - рекомендуемую таблицу стилей по умолчанию для документов HTML 4.0.
Учтите, что таблица стилей по умолчанию может быть изменена, если системные настройки изменены пользователем (например, системные цвета). Однако, из-за ограничений конкретной реализации ПА, может оказаться невозможным изменить значения в таблице стилей по умолчанию.
Области видимости таблиц стилей из этих трёх источников будут перекрываться и взаимодействовать в соответствии с каскадом.
Каскад CSS назначает вес каждому правилу стиля. Если применяются несколько правил, одно, имеющее больший вес, будет иметь приоритет.
По умолчанию правила авторской таблицы стилей имеют больший вес, чем правила таблицы стилей пользователя. Преимущество зарезервировано, однако, для правил "!important". Все правила пользователя и автора имеют больший вес, чем правила таблицы стилей по умолчанию в ПА.
Импортируемы таблицы стилей также каскадируются, и их вес зависит от порядка импортирования. Правила, специфицированные в имеющейся таблице стилей, переопределяют правила, импортируемые из других таблиц. Импортированные таблицы стилей сами могут импортировать и переопределять другие таблицы стилей рекурсивно, и тогда применяются те же правила приоритета.
Объявления в контексте страницы
подчиняются каскаду так же, как и нормальные объявления CSS2.
Пример(ы):
@page { margin-left: 3cm; }
@page :left { margin-left: 4cm; }
Из-за более высокой специфики селектора псевдокласса, левое поле левых страниц будет '4см', а все остальные страницы (т.е. правые) - левое поле '3см'.
Рекомендации W3C от 12 Мая 1998 года
Данная версия:http://www.w3.org/TR/1998/REC-CSS2-19980512; Последняя версия:http://www.w3.org/TR/REC-CSS2
Предыдущая версия:http://www.w3.org/TR/1998/PR-CSS2-19980324
Редакторы: Bert Bos<bbos@w3.org>
Håkon Wium Lie<howcome@w3.org>
Chris Lilley<chris@w3.org>
Ian Jacobs<ij@w3.org>
На русский язык перевёл Александр Пирамидин <a_pyramidin@yahoo.com>
Ключевые слова имеют форму идентификаторов. Ключевые слова обязаны не размещаться между кавычками ("..." или '...'). Таким образом,
red
это ключевое слово, а
"red"
- нет (это строка). Другие неверные примеры:
Примеры неверного использования:
width: "auto"; border: "none"; font-family: "serif"; background: "red";
Явно или неявно, каждый шрифт имеет ассоциированную таблицу, таблицу кодировки шрифта, которая сообщает, какой символ представляется каждым глифом. Эту таблицу называют также вектором кодирования.
На практике, многие шрифты содержат различные глифы для одного и того же символа.
Какой из этих глифов используется и зависит или от правил языка, или от предпочтений дизайнера.
В арабском языке, например, все буквы содержат 4 (или 2) различных фигуры, в зависимости от того, используется буква в начале слова, в середине, в конце или изолированно. Во всех случаях это один символ, и, соответственно - только один символ в документе-источнике, но при печати он выглядит каждый раз по другому.
Есть также шрифты, которые оставляют за дизайнером графики право выбора из нескольких альтернативных начертаний. К сожалению, CSS2 ещё не предоставляет возможности выбора из этих альтернатив. В настоящий момент, из такого шрифта всегда выбирается начертание по умолчанию.
В контексте форматирования блока боксы устанавливаются один за другим, вертикально, начиная от верха содержащего блока. Вертикальное расстояние между двумя родственными боксами определяется свойством 'margin'. Горизонтальные поля между смежными боксами блока в контексте форматирования блока сжимаются.
В контексте форматирования блока левый внешний край бокса касается левого края содержащего блока (для форматирования справа-налево - касается правый край). Это верно даже в случае с поплавками (хотя область содержимого может усекаться из-за поплавков).
Информацию о разрывах страниц в страничных носителях см. в разделе допустимые разрывы страниц.
В контексте инлайн-форматирования боксы устанавливаются по горизонтали, один за другим, начиная от верха содержащего блока. Горизонтальные поля, рамки и заполнение рассматриваются как отношения между боксами. Боксы могут быть выровнены по вертикали несколькими способами: могут быть выровнены их нижние или верхние края или базовые линии текста внутри них. Прямоугольная область, содержащая боксы, которые образуют строку, называется строчный бокс.
Ширина строчного бокса определяется содержащим блоком. Высота строчного бокса определяется правилами из раздела вычисление высоты строки. Строчный бокс всегда имеет высоту, достаточную для содержащихся в нём боксов. В то же время, он может быть выше, чем самый высокий из содержащихся в нём боксов (если, например, боксы выровнены так, что базовые линии выстроены). Если высота бокса В меньше, чем высота строчного бокса, содержащего его, то вертикальное выравнивание В внутри строчного бокса определяется свойством 'vertical-align'.
Если несколько инлайн-боксов не входят по горизонтали в один строчный бокс, они распределяются на два или более вертикально упакованных строчных бокса. Таким образом, параграф будет вертикальным стеком из строчных боксов. Строчные боксы упакованы по вертикали без разделения и никогда не перекрываются.
Вообще, левый край строчного бокса касается левого края его содержащего блока, и правый край касается правого края его содержащего блока. В то же время, боксы-поплавки могут появляться между краем содержащего блока и краем строчного блока. Таким образом, хотя строчные боксы в том же самом контексте инлайн-форматирования обычно имеют ту же самую ширину (что и содержащий блок), они могут иметь и другую ширину из-за поплавков, уменьшающих горизонтальное пространство. Строчные боксы в том же самом контексте инлайн-форматирования обычно различаются по высоте (например, одна строка может содержать высокое изображение, а другие строки - только текст).
Если суммарная ширина инлайн-боксов в строке меньше, чем ширина строчного бокса, содержащего их, то их распределение по горизонтали внутри строчного бокса определяется свойством 'text-align'. Если это свойство имеет значение 'justify', ПА может уплотнить инлайн-боксы.
Поскольку инлайн-бокс не может превысить ширину строчного бокса, длинные инлайн-боксы разделяются на несколько боксов, и эти боксы распределяются на несколько строчных боксов. Если инлайн-бокс разделён, то поля, рамки и заполнение не имеют визуального эффекта в тех местах, где происходит разделение. Форматирование полей, рамок и заполнения может не быть определено полностью, если разделение происходит внутри двунаправленного внедрения.
Инлайн-боксы могут также быть разделены на несколько боксов внутри одного строчного бокса
Графические интерфейсы пользователя могут использовать контуры вокруг элементов, чтобы сообщать пользователю, какой элемент страницы имеет фокус. Эти контуры дополняют рамки, и включение и выключение не должно вызывать перерисовки документа. Фокус является субъектом действий пользователя в документе (например, при вводе текста, выборе кнопки, и т.д.). ПА, поддерживающие группы интерактивных носителей, обязаны отслеживать, где находится фокус, и обязаны также отображать фокус. Это может быть сделано путём использования динамических контуров вместе с псевдоклассом :focus.
Пример(ы):
Чтобы прорисовать толстую чёрную линию вокруг элемента, когда он имеет фокус, толстую красную линию, когда он активен, можно использовать следующие правила:
:focus { outline: thick solid black } :active { outline: thick solid red }
По вопросам цветовой гаммы проконсультируйтесь в Gamma Tutorial в спецификации PNG ([PNG10]).
При вычислении коррекции цветовой гаммы, ПА, выводящие на CRT, могут принять идеальный CRT и игнорировать любые эффекты внедряемой гаммы. Это означает, что минимальная обработка, необходимая для текущей платформы - :
PC, использующий MS-Windows none Unix, использующий X11 none Mac, использующий QuickDraw применяет гамму 1.45 [ICC32] (приложения ColorSync-savvy могут просто передавать профиль sRGB ICC в ColorSync для выполнения необходимой коррекции цвета) SGI, использующий X применяет значения гаммы из /etc/config/system.glGammaVal (значение по умолчанию - 1.70; приложения, запущенные на Irix 6.2 или выше могут просто передавать профиль sRGB ICC в систему управления цветом) NeXT, использующий NeXTStep применяется гамма 2.22
"Применение гаммы" означает, что каждый из трёх - R, G и B - обязан быть конвертирован в R'=Rgamma, G'=Ggamma, B'=Bgamma, прежде чем быть обработанным ОС.
Это можно быстро выполнить путём однократного создания 256-элементной просмотровой таблицы при вызове браузера таким вот образом:
for i := 0 to 255 do raw := i / 255.0; corr := pow (raw, gamma); table[i] := trunc (0.5 + corr * 255.0) end
что затем позволяет исключить необходимость чрезмерных вычислений для атрибута цвета, и ещё меньше - через пикселные значения.
В этом пособии мы покажем, как можно быстро создать простые таблицы стилей.
Для использования этого пособия необходимо немного знать HTML (см. [HTML40]) и некоторые базовые термины настольных публикаций.
Вот небольшой документ HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <HTML> <HEAD> <TITLE>Bach's home page</TITLE> </HEAD> <BODY> <H1>Bach's home page</H1> <P>Johann Sebastian Bach was a prolific composer. </BODY> </HTML>
Чтобы установить голубой цвет текста элемента H1, можно написать такое правило CSS:
H1 { color: blue }
Правило CSS состоит из двух главных частей: селектора ('H1') и объявления ('color: blue'). Объявление имеет две части: свойство ('color') и значение ('blue'). Поскольку в предыдущем примере делается попытка использовать только одно из свойств, необходимое для отображения документа HTML, он может быть квалифицирован как таблица стилей. В комбинации с другими таблицами стилей (возможность комбинировать таблицы стилей является одним из фундаментальных свойств CSS) оно (свойство) определит конечный вид документа.
Спецификация HTML 4.0 определяет, как правила таблиц стилей могут быть специфицированы для документов HTML: или внутри документа HTML, или в таблицах стилей. Чтобы поместить в документ таблицу стилей, используйте элемент STYLE:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <HTML> <HEAD> <TITLE>Bach's home page</TITLE> <STYLE type="text/css"> H1 { color: blue } </STYLE> </HEAD> <BODY> <H1>Bach's home page</H1> <P>Johann Sebastian Bach was a prolific composer. </BODY> </HTML>
Для максимальной гибкости мы рекомендуем, чтобы авторы специфицировали внешние таблицы стилей; они могут быть изменены без модификации документа-источника HTML, а также могут раздельно использоваться несколькими документами. Чтобы сослаться на внешнюю таблицу стилей, Вы можете использовать элемент LINK:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <HTML> <HEAD> <TITLE>Bach's home page</TITLE> <LINK rel="stylesheet" href="bach.css" type="text/css"> </HEAD> <BODY> <H1>Bach's home page</H1> <P>Johann Sebastian Bach was a prolific composer. </BODY> </HTML>
CSS может использоваться с любым структурированным форматом документа, например, с приложениями eXtensible Markup Language [XML10]. На самом деле XML намного больше зависит от таблиц стилей, чем HTML, поскольку авторы могут создавать свои собственные элементы, которые не известны ПА и не могут ими выводиться.
Вот простой фрагмент XML:
<ARTICLE> <HEADLINE>Fredrick the Great meets Bach</HEADLINE> <AUTHOR>Johann Nikolaus Forkel</AUTHOR> <PARA> One evening, just as he was getting his <INSTRUMENT>flute</INSTRUMENT> ready and his musicians were assembled, an officer brought him a list of the strangers who had arrived. </PARA> </ARTICLE>
Чтобы вывести данный фрагмент в виде документа, мы обязаны сначала объявить, какие элементы являются элементами инлайн-уровня (т.е. не вызывают разрывов строк) и какие - уровня блока (т.е. вызывают разрывы строк).
INSTRUMENT { display: inline } ARTICLE, HEADLINE, AUTHOR, PARA { display: block }
Первое правило объявляет INSTRUMENT как инлайн, а второе правило с его списком разделённых запятыми селекторов объявляет все другие элементы как элементы уровня блока.
Одним из вариантов связи таблицы стилей с документом XML является использование инструкций процесса:
<?XML:stylesheet type="text/css" href="bach.css"?> <ARTICLE> <HEADLINE>Fredrick the Great meets Bach</HEADLINE> <AUTHOR>Johann Nikolaus Forkel</AUTHOR> <PARA> One evening, just as he was getting his <INSTRUMENT>flute</INSTRUMENT> ready and his musicians were assembled, an officer brought him a list of the strangers who had arrived. </PARA> </ARTICLE>
Визуальный ПА может отформатировать вышеприведённый пример так:
[D]Обратите внимание, что слово "flute" остаётся внутри параграфа, поскольку это содержимое инлайн-элемента INSTRUMENT.
Тем не менее, текст ещё не выглядит так, как Вы могли бы ожидать. Например, шрифт заголовка должен быть крупнее, чем остальной текст, и Вам может понадобиться вывести имя автора курсивом:
INSTRUMENT { display: inline } ARTICLE, HEADLINE, AUTHOR, PARA { display: block } HEADLINE { font-size: 1.3em } AUTHOR { font-style: italic } ARTICLE, HEADLINE, AUTHOR, PARA { margin: 0.5em }
Визуальный ПА может сформатировать этот пример так:
[D]Добавление других правил в таблицу стилей позволить Вам сделать представление документа ещё более интересным.
Значение: | [ [<uri> ,]* [ auto | crosshair | default | pointer | move | e-resize | ne-resize | nw-resize | n-resize | se-resize | sw-resize | s-resize | w-resize| text | wait | help ] ] | inherit |
Начальное: | auto |
Применяется: | ко всем элементам |
Наследуется: | да |
Процентное: | N/A |
Носитель: | визуальный, интерактивный |
Это свойство специфицирует тип курсора указательного устройства.
Значения имеют следующий смысл:
auto
пользовательский агент (ПА) определяет курсор на базе текущего контекста.
crosshair
простой крест (например, увеличение знака "+" с помощью коротких отрезков).
default
курсор по умолчанию, зависящий от платформы. Часто отображается стрелкой.
pointer
курсор - указатель на ссылку.
move
обозначает то, что перемещается.
e-resize, ne-resize, nw-resize, n-resize, se-resize, sw-resize, s-resize, w-resize
обозначают перемещение какого-либо края. Например, курсор 'se-resize' используется, если передвижение начинается в юго-восточном углу бокса.
text
обозначает текст, который может быть выделен. Часто отображается как вертикальная черта I.
wait
обозначает, что программа занята и пользователь должен подождать. Часто отображается как (песочные) часы.
help
для объекта под курсором имеется вспомогательная информация. Часто отображается как знак вопроса или воздушный шар.
<uri>
ПА получает курсор из ресурса, обозначенного в URI. Если ПА не может обработать первый курсор из списка курсоров, он должен попытаться обработать второй, и т.д. Если ПА не может обработать ни один курсор, определённый пользователем, он обязан использовать общий курсор в конце списка.
Пример(ы):
P { cursor : url("mything.cur"), url("second.csr"), text; }
Все уровни CSS - уровень 1, уровень 2 и любые будущие уровни - используют одно ядро синтаксиса. Это позволяет пользовательским агентам (ПА) разбирать (хотя и не полностью понимать) таблицы стилей, написанные в уровнях CSS, ещё не существовавших в момент создания ПА. Дизайнеры могут использовать это свойство для создания таблиц стилей, работающих со старыми ПА, применяя также возможности позднейших уровней CSS.
На лексическом уровне таблицы стилей CSS состоят из последовательности лексем (грамматических единиц). Список лексем CSS2 приведён ниже. Определения используют общепринятые выражения в стиле Lex. Восьмеричные коды относятся к ISO 10646 ([ISO10646]). Как и в Lex, в случае нескольких одновременных совпадений, самое длинное совпадение определяет лексему.
Лексема
Определение
|url\({w}([!#$%&*-~]|{nonascii}|{escape})*{w}\)
Вышеприведённые макросы в фигурных скобках ({}) определены так:
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.
При печати двухсторонних документов страничные боксы левой и правой страниц должны различаться. Это можно обозначить с помощью двух псевдоклассов CSS, которые могут быть определены в контексте страницы.
Все страницы автоматически классифицируются ПАгентами на псевдоклассы :left или :right.
Пример(ы):
@page :left { margin-left: 4cm; margin-right: 3cm; }
@page :right { margin-left: 3cm; margin-right: 4cm; }
Если даны разные объявления для левых и правых страниц, ПА обязан использовать эти объявления, даже если ПА не переносит страничные боксы на левый и правый листы (например, для принтера, имеющего только одностороннюю печать).
Авторы могут специфицировать также стиль для первой страницы документа псевдоклассом :first:
Пример(ы):
@page { margin: 2cm } /* Все поля установлены в 2см */
@page :first { margin-top: 10cm /* Верхнее поле на первой странице - 10см */ }
Является ли первая страница документа :left или :right, зависит от направления письма в документе и находится вне пределов рассмотрения данного документа. Однако, чтобы форсировать первую страницу в :left или :right, авторы могут вставить разрыв страницы перед первым генерируемым боксом (например, в HTML, специфицировать это для элемента BODY).
Свойства, специфицированные в :left (или :right) в правилах @page, переопределяют те же свойства, специфицированные в правиле @page и не имеющие специфицированного псевдокласса. Свойства, специфицированные в :first в правиле @page, переопределяют те же свойства, специфицированные в :left (или :right) в правилах @page.
Примечание.
Добавление объявлений в псевдоклассы :left или :right не указывает, выходит ли документ на принтер одно- или двухсторонним (это находится вне рамок данной спецификации).
Примечание.
В будущих версиях CSS возможно появление других псевдоклассов страницы.
Это расстояние в em-квадрате от базовой линии до низшей точки, достигаемой глифом, исключая любые акценты и знаки диакритики.
Это расстояние в em-квадрате от базовой линии до высшей точки, достигаемой глифом, исключая любые акценты и знаки диакритики.