Содержание
Свойства, описываемые в следующих разделах, влияют на визуальное представление символов, пробелов, слов и абзацев.
| Значение: | <длина> | <проценты> | inherit |
| Начальное значение: | 0 |
| Область применения: | элементы уровня блока, ячейки таблицы и строковые блоки |
| Наследование: | да |
| Процентное задание значений: | относительно ширины контейнера |
| Устройства: | визуальные |
| Вычисляемое значение: | процентное соотношение как определено, или абсолютная длина |
Это свойство определяет отступ первой строки теста в блоке. Более точно говоря, оно определяет отступ первого блока, который входит в первый линейного блок блока. Блок смещается относительно левого (или правого при расположении текста справа налево) края линейного блока. Агентам пользователей следует представлять этот отступ как пустое пространство.
Значения имеют следующий смысл:
Значение свойства 'text-indent' может быть отрицательным, но в конкретных реализациях могут быть установлены ограничения на использование таких значений. Если значение свойства 'text-indent' является или отрицательным или превышает ширину блока, то первый блок, описанный выше, может переполнять блок. Значение свойства 'overflow' будет влиять на то, будет ли видим текст, переполняющий блок.
В следующем примере задается отступ текста, равный '3em'.
p { text-indent: 3em }
Примечание: Поскольку значение свойства 'text-indent' наследует, при определении в элементе блока, то оно будет оказывать влияние на дочерние элементы строковых блоков. Поэтому часто более полезно задавать 'text-indent: 0' для элементов, которые определены как 'display:inline-block'.
| Значение: | left | right | center | justify | inherit |
| Начальное значение: | безымянное значение, которое действует как 'left' если свойство 'direction' имеет значение 'ltr', 'right' если 'direction' – 'rtl' |
| Область применения: | элементы уровня блока, ячейки таблицы и строковые блоки |
| Наследование: | да |
| Процентное задание значений: | Н/Д |
| Устройства: | визуальные |
| Вычисляемое значение: | начальное значение или как определено |
Это свойство определяет способ выравнивания строкового содержимого блока. Значения имеют следующий смысл:
Блок текста - это совокупность линейных блоков. При значениях 'left', 'right' и 'center' это свойство указывает способ выравнивания последовательных блоков в каждом линейном блоке относительно левой и правой стороны линейного блока; выравнивание производится не относительно области просмотра. В случае значения 'justify', данное свойство определяет то, как строковые блоки должны располагаться относительно обеих сторон блока. (См. также 'letter-spacing' и 'word-spacing'.)
Если вычисленным значением свойства 'text-align' является 'justify', и при этом вычисленное значение свойства 'white-space' равно 'pre' или 'pre-line', то фактическим значением свойства 'text-align' будет его начальное значение.
В этом примере обратите внимание на то, что значение 'text-align' наследуется, поэтому во всех элементах уровня блока, находящихся в элементе DIV и имеющих значение 'class=center', строковое содержимое будет выровнено по центру.
div.important { text-align: center }
Примечание. Фактический алгоритм выравнивания зависит от агента пользователя и языка/скрипта текста.
Соответствующие агенты пользователей могут интерпретировать значение 'justify' как 'left' или 'right', это зависит от основного направления написания элемента: слева направо или справа налево, соответственно.
| Значение: | none | [ underline || overline || line-through || blink ] | inherit |
| Начальное значение: | none |
| Область применения: | все элементы |
| Наследование: | нет (см. описание) |
| Процентное задание значений: | Н/Д |
| Устройства: | визуальные |
| Вычисляемое значение: | как определено |
Этим свойством описываются элементы декорирования текста элементов с помощью цветов элемента. Когда задается для строковых элементов, оно оказывает воздействие на все блоки, сгенерированные этим элементом; для всех остальных элементов, декорирование распространяется на безымянный строковый блок, который охватывает все in-flow строковые дочерние элементы этого элемента, и ко всем in-flow потомкам уровня блока. Однако, оно больше не распространяется ни на перемещаемых и абсолютно позиционированных потомков, ни на содержимое 'inline-table' и 'inline-block' потомков.
Подчеркивание, надстрочное подчеркивание, перечеркивание применяется только к тексту (включая пустое пространство, межбуквенные интервалы и интервалы между словами): поля, границы и отступы – пропускаются. Если элемент не содержит текст, то агент пользователя должен воздержаться от представления этого декорирования текста в элементе. Например, рисунок не может быть подчеркнут.
Свойство 'text-decoration' в дочерних элементах не способно оказать никакого влияния на декорирование предка. В определении позиции и толщины декорированных текстовых строк, агенты пользователя могут принимать во внимание размеры шрифта и доминирующие базовые линии потомков, но должны использовать эту же базовую линию и толщину на каждой строке. Относительно позиционированный потомок перемещает все декорирование текста, затрагивая его наряду с текстом потомка; он не влияет на вычисление начальной позиции декорирования на этой строке.
Значения имеют следующий смысл:
Цвет(а), требуемый для декорирования текста, должен быть определен значением свойства 'color' элемента, для которого устанавливается свойство 'text-decoration'. Цвет элементов декорирования всегда должен оставаться прежним, даже если последующие элементы имеют другие значения свойства 'color'.
Некоторые агенты пользователей реализуют декорирование текста путем распространения декорирования на дочерние элементы в противоположность сохранению постоянной толщины и позиции строки, как это описано выше. Это, возможно, позволяла более свободная формулировка в CSS2. Агенты пользователей соответствующие SVG1, только CSS1 и только CSS2 могут реализовывать такую старую модель и все еще считаться соответствующими данной части CSS 2.1. (Это не применимо к агентам пользователей, разработанным после выхода данной спецификации.)
В следующем примере для HTML текстовое содержимое всех элементов A, действующих как гиперссылки (посещенные или не посещенные), будет подчеркнуто:
a:visited,a:link { text-decoration: underline }
В следующем фрагменте таблицы стилей и документа:
blockquote { text-decoration: underline; color: blue; }
em { display: block; }
cite { color: fuchsia; }
<blockquote>
<p>
<span>
Help, help!
<em> I am under a hat! </em>
<cite> —GwieF </cite>
</span>
</p>
</blockquote>
... подчеркивание для элемента blockquote распространено на безымянный строковый элемент, который окружает элемент span, в результате чего текст "Help, help!" будет синим, с синим подчеркиванием от безымянного строкового элемента, расположенного под ним, цвет был взят от элемента blockquote. Фрагмент <em>текст</em> в блоке em также будет подчеркнут, так как он является in-flow блоком, на который распространяется подчеркивание. Цвет текста последней строки будет фуксия, но подчеркивание под ним – все еще синее подчеркивание от безымянного строкового элемента.
Данный рисунок показывает блоки, затронутые в примере выше. Закругленная линия цвета аква представляет безымянный строковый элемент, окружающий строковое содержимое элемента абзаца, закругленная синяя линия представляет элемент span, а оранжевые линии – представляют блоки.
| Значение: | normal | <длина> | inherit |
| Начальное значение: | normal |
| Область применения: | все элементы |
| Наследование: | да |
| Процентное задание значений: | Н/Д |
| Устройства: | визуальные |
| Вычисляемое значение: | 'normal' или абсолютная длина |
Это свойство определяет расстояние между символами текста. Значения имеют следующий смысл:
Алгоритмы определения расстояния между символами зависят от агента пользователя.
В данном примере расстояние между символами в элементах BLOCKQUOTE увеличено на '0.1em'.
blockquote { letter-spacing: 0.1em }
В следующем примере агенту пользователя запрещено изменять расстояние между символами:
blockquote { letter-spacing: 0cm } /* То же, что и '0' */
Если итоговое расстояние между двумя символами отлично от принятого по-умолчанию, то агентам пользователей не следует использовать лигатуры.
| Значение: | normal | <длина> | inherit |
| Начальное значение: | normal |
| Область применения: | все элементы |
| Наследование: | да |
| Процентное задание значений: | Н/Д |
| Устройства: | визуальные |
| Вычисляемое значение: | для 'normal' – значение '0'; в остальных случаях – абсолютная длина |
Это свойство определяет расстояние между словами. Значения имеют следующий смысл:
Алгоритмы определения расстояния между словами зависят от агента пользователя. На расстояние между словами также влияет выравнивание по обоим краям (см. свойство 'text-align'). На расстояние между словами влияет каждый пробел (U+0020), неразрывный пробел (U+00A0) и идеографический пробел (U+3000) оставленный в тексте после того, как были применены правила обработки пустого пространства.
В данном примере расстояние между всеми словами в элементе H1 увеличивается на '1em'.
h1 { word-spacing: 1em }
| Значение: | capitalize | uppercase | lowercase | none | inherit |
| Начальное значение: | none |
| Область применения: | все элементы |
| Наследование: | да |
| Процентное задание значений: | Н/Д |
| Устройства: | визуальные |
| Вычисляемое значение: | как определено |
Это свойство управляет эффектом выделения заглавными буквами текста элемента. Значения имеют следующий смысл:
Фактическое преобразование в заглавные или строчные буквы зависит от используемого языка написания. О том, как определить язык элемента, см. в RFC 3066 ([RFC3066]).
Соответствующие агенты пользователей могут считать значение свойства 'text-transform' равным 'none' для написания скриптов, которые они не преобразуют.
В данном примере весь текст в элементе H1 будет выделен заглавными буквами.
h1 { text-transform: uppercase }
| Значение: | normal | pre | nowrap | pre-wrap | pre-line | inherit |
| Начальное значение: | normal |
| Область применения: | все элементы |
| Наследование: | да |
| Процентное задание значений: | Н/Д |
| Устройства: | визуальные |
| Вычисляемое значение: | как определено |
Данное свойство описывает способ обработки пустого пространства внутри элемента. Значения имеют следующий смысл:
В следующих примерах показано ожидаемое поведение пустого пространства в элементах PRE и P, атрибута "nowrap" в HTML.
pre { white-space: pre }
p { white-space: normal }
td[nowrap] { white-space: nowrap }
:before,:after { white-space: pre-line }
Дополнительно, в следующем примере продемонстрирован эффект HTML элемента PRE с нестандартным атрибутом "wrap":
pre[wrap] { white-space: pre-wrap }
Любой текст, непосредственно содержащий внутри элементы уровня блока (не внутри строкового элемента), следует обрабатывать как безымянный строковый элемент.
Для каждого строкового элемента (включая безымянные строковые элементы), выполняются следующие шаги, обрабатывая символы, отформатированные как двунаправленные, как будто их там нет:
Затем весь блок представляется. Строки размещаются принимая во внимание переупорядочивание двунаправленного текста, и заключая как определено свойством 'white-space'.
Поскольку каждая строка размещается,
В перемещаемом объекте не следует предоставлять возможность разрыва строки.
Примечание. CSS 2.1 полностью не определяет то, где возможно осуществлять разрывы строк. В перемещаемых и абсолютно позиционированных элементах не предоставлена возможность осуществления разрывов строк.
Задан следующий фрагмент разметки, сделаны специальные пометки для пробелов (с различными фонами и границами для акцентирования и идентификации):
<ltr>A <rtl> B </rtl> C</ltr>
...где элемент <ltr> представляет вставку с направлением слева-направо, а элемент <rtl> представляет вставку с направлением справа-налево, и подразумевается, что значение свойства 'white-space' установлено в 'normal', то в результате применения вышеизложенной модели обработки получится следующее:
Останется два пробела – один после А на уровне вложения с направлением слева-направо, и один после В на уровне вложения с направлением справа-налево. Затем это будет представлено в соответствии с алгоритмом двунаправленного вывода Unicode, и в результате примет вид:
A BC
Примите во внимание, что имеется два пробела между A и B, и нет ни одного между B и C. Этого иногда можно избежать при использовании естественной двунаправленности символов вместо подобных уровней вложенности. Кроме того, хорошо избегать применения пробелов непосредственно внутри начальных и конечных тегов, поскольку они имеют тенденцию делать непредсказуемые вещи, имея дело со сворачиванием пустого пространства.
Управление символами, отличными от U+0009 (табуляция), U+000A (перевод строки), U+0020 (пробел) и U+202x (символ, форматированный как двунаправленный), осуществляется как символами для представления так же, как и управление любыми обычными символами.
Комбинированные символы следует обрабатывать как часть символа с которым они состоят в комбинации. Например, :first-letter разрабатывает весь глиф, если содержимое подобно "o<span>̈</span>"; это только не соответствует базовому символу