层叠样式表第2级 CSS2规范开发手册 - WEB前端开发 专注前端开发,关注用户体验

16 文本

目录

    以下各小节定义的属性将影响字符、空白、词以及段落的视觉呈现。

16.1 缩进'text-indent'属性

'text-indent'
值:  <length> | <percentage> | inherit
初始值:  0
适用于:  块级元素
可否继承:  
百分比:  相对于包含块的宽度
媒介:  视觉

    该属性指定了一个块中文本第一行的缩进。更精确的说,指定了流入块的第一个线框的第一个框的缩进。该框从线框的左边开始缩进(对于从右到左的布局是从右缩进)。用户端应该将该缩进渲染为空白。

    值的含义如下:

<length>
缩进是固定长度。
<percentage>
缩进是包含块宽度的百分比。

    'text-indent'的值可以是负数,但是也许会有因实现不同的限制。

范例:

    下面的例子将造成'3em'的文本缩进。

  P { text-indent: 3em }

16.2 对齐:'text-align'属性

'text-align'
值:  left | right | center | justify | <string> | inherit
初始值:  取决于用户端及书写方向
适用于:  块级元素
可否继承:  
百分比:  N/A
媒介:  视觉

    该属性描述了在一个块内行间内容的对齐方式。取值的含义如下:

leftrightcenterjustify
分别意味着左对齐、右对齐、中间对齐、两端对齐文本。
<string>
指定一个字符串,规定了表格中单元格的对齐方式(参见列的水平对齐中的详细描述和例子)。该值表格的单元格有效。如果设置在其它元素之上,它被解释为'left'或'right'——取决于'direction'是'ltr'还是'rtl'。

    一个文字块是一系列的线框。取值为'left'/'right'/'center'时,该属性规定了每个线框内的行间框相对线框的左边、右边的对齐;对齐并不是针对视点的。取值为'justify'时,用户端在调整位置的时候,也还可能拉伸行间框。(参见'letter-spacing''word-spacing'.)

范例:

    本例中需要注意,由于'text-align'是可继承的,所有在带有'class=center'修饰的DIV元素里的块级元素都会将他们的行内文本居中对齐。

DIV.center { text-align: center }

注意:实际采用的对齐算法取决于用户端以及书写的语言。

    与CSS2一致的用户端可能将'justify'理解为'left'或'right',取决于该元素的缺省书写方向是左到右还是右到左。

16.3 装饰

16.3.1 下划线,上划线,删除线,闪烁'text-decoration'属性

'text-decoration'
值:  none | [ underline || overline || line-through || blink ] | inherit
初始值:  
适用于:  所有元素
可否继承:  否(见后文)
百分比:  N/A
媒介:  视觉

    该属性描述了加在某元素文本上的装饰。如果属性指定给一个块级元素,它会影响该元素的所有行间级后代。如果它指定给(或影响)一个行间元素,它会影响该元素产生的所有框。如果该元素没有内容或没有文本内容(例如HTML中的IMG元素),用户端必须忽略该属性。

    取值的含义如下:

none
没有任何文本修饰。
underline
每行文本均有下划线。
overline
每行文本均有上划线。
line-through
每行文本中间都有删除线。
blink
文本闪烁(交替显示、隐藏)。一致的用户端并未被要求支持该值。

    文本修饰要求的颜色应该从'color'属性值中派生。

    该属性不可被继承,但是一个块框的派生框应该具有相同的装饰格式(比如,都应该有下划线)。装饰的颜色应该保持一致,即使派生的元素设定了不同的'color'值。

范例:

    下例的HTML中,作为超连接的A元素的所有文本内容都将有下划线:

A[href] { text-decoration: underline }

16.3.2 文本阴影'text-shadow'属性

'text-shadow'
值:  none | [<color> || <length> <length> <length>? ,]* [<color> || <length> <length> <length>?] | inherit
初始值:  
适用于:  所有元素
可否继承:  否(见后文)
百分比:  N/A
媒介:  视觉

    改属性接受一个逗号分割的阴影效果列表,并应用到该元素的文本上。阴影效果按照给定的顺序应用,因此有可能出现互相覆盖,但是它们永不会覆盖文本本身。阴影效果不会改变框的尺寸,但可能延伸到它的边界之外。阴影效果的堆叠层次和元素本身的层次是一样的。

    每个阴影效果必须指定阴影偏移,而模糊半径、阴影颜色是可选参数。

    阴影偏移由两个<length>值指定到文本的距离。第一个长度值指定距离文本右边的水平距离,负值将会把阴影放置在文本的左边。第二个长度值指定距离文本下边的垂直距离,负值将会把阴影放置在文本上方。

    在阴影偏移之后,可以指定一个模糊半径。模糊半径是个长度值,指出模糊效果的范围。如何计算模糊效果的具体算法并没有指定。

    在阴影效果的长度值之前或之后还可以选择指定一个颜色值。颜色值会被用作阴影效果的基础。如果没有指定颜色,那么将使用'color'属性值来替代。

    文本阴影可以使用在:first-letter:first-line伪元素上。

范例:

    下面的例子将在元素文本的右边、下边设置文本阴影。由于并未指定颜色,阴影将和元素本身的颜色相同。由于也没有指定模糊半径,文本阴影将不会模糊:

H1 { text-shadow: 0.2em 0.2em }

    下例中将在元素文本的右下方放置阴影。阴影的模糊半径是5px,颜色是红的。

H2 { text-shadow: 3px 3px 5px red }

    下面的例子指定了一个阴影效果的列表。第一个阴影将放置在元素文本的右下方,红色,无模糊。第二个将覆盖第一个阴影,黄色,模糊,文本的左下方。第三个将放置在文本的右上方,无模糊。由于第三个阴影没有指定颜色,因此元素的'color'属性值将被使用:

H2 { text-shadow: 3px 3px red, yellow -3px 3px 2px, 3px -3px }

范例:

    考虑这个例子:

SPAN.glow { 
    background: white; 
    color: white;
    text-shadow: black 0px 0px 5px;
}

    在这里,'background''color'属性取值是一样的,而'text-shadow'属性用来创建一种“日蚀”效果:

Solar eclipse effect   [D]

    注意:该属性在CSS1中未定义。某些阴影效果(例如最后的示例)在只支持CSS1的UA中会将文本渲染成看不见。

16.4 字母间距和词间距:'letter-spacing''word-spacing'属性

'letter-spacing'
值:  normal | <length> | inherit
初始值:  normal
适用于:  所有元素
可否继承:  
百分比:  N/A
媒介:  视觉

    该属性指定了文本字符间的间距特性。取值的含义如下:

normal
间距是当前字体的通常间距。这个值允许用户端改变字符间的距离以对齐文本。
<length>
该值指出在缺省的字符间距之外,额外的字符间间距。数值可以是负数,但是可能有与实现相关的限制。用户端不可以因对齐文本而进一步增加或减少字符间距。

    字符间距的算法与用户端相关。字符间距还可能受到对齐(参见'text-align'属性)的影响。

范例:

    本例中,BLOCKQUOTE元素中的字符间距增加了'0.1em':

BLOCKQUOTE { letter-spacing: 0.1em }

    下例中,将不允许用户端变更字符间距:

BLOCKQUOTE { letter-spacing: 0cm }   /* Same as '0' */

    如果两个字符间经合成的间距和缺省的间距不同,用户端不应该使用补救措施

    与CSS2一致的用户端可能会将'letter-spacing'属性的值理解为'normal'。

'word-spacing'
值:  normal | <length> | inherit
初始值:  normal
适用于:  所有元素
可否继承:  
百分比:  N/A
媒介:  视觉

    该属性指定了单词之间的间距特性。取值含义如下:

normal
正常的单词间间距,由当前字体和/或UA定义。
<length>
该取值表示在缺省的词间距之外,额外的词间距。取值可以是负数,但是可能有与实现相关的限制。

    词间距的算法与用户端相关。词间距还可能受到对齐(参见'text-align'属性)的影响。

范例:

    本例中,H1元素中的每个单词的词间距将增加'1em':

H1 { word-spacing: 1em }

    与CSS2一致的用户端可能将'word-spacing'属性的值理解为'normal'。

16.5 转为大写:'text-transform'属性

'text-transform'
值:  capitalize | uppercase | lowercase | none | inherit
初始值:  
适用于:  所有元素
可否继承:  
百分比:  N/A
媒介:  视觉

    该属性控制某元素文本的大小写效果。取值的含义如下:

capitalize
将每个单词的首字符变为大写。
uppercase
将每个单词的所有字符变为大写。
lowercase
将每个单词的所有字符变为小写。
none
没有大小写转换效果。

    每个情况下实际的转换取决于书写语言本身。参见RFC 2070([RFC2070])中关于找到元素语言方法的讨论。

    对于不是来自Latin-1字符集中的字符,以及元素的语言的转换不同于ISO 10646([ISO10646])中给出的大小写转换表的话,与CSS2一致的用户端可能将'text-transform'的值认为是'none'。

范例:

    本例中,H1元素中所有的文本都将转换为大写文本:

H1 { text-transform: uppercase }

16.6 空白:'white-space'属性

'white-space'
值:  normal | pre | nowrap | inherit
初始值:  normal
适用于:  块级元素
可否继承:  
百分比:  N/A
媒介:  视觉

    该属性声明了元素内的空白是如何处理的。取值的含义如下:

normal
该值告诉用户端,合并一系列的空白,在必要的时分行以填充线框。在生成的内容中,出现"\A"的话,有可能引起额外的分行(就象HTML中的BR元素)。
pre
该值阻止用户端合并一系列的空白。只有在源文件中出现新行时,或者在生成的内容中出现"\A"时才分行。
nowrap
该值象'normal'那样合并空白,但是阻止文本内的分行,除非那些分行是由生成的内容中的"\A"造成的(就象HTML中的BR元素)。

范例:

    下面的例子中显示了对于PRE和P元素,我们所期待的空白的行为应该如何,以及HTML中的"nowrap"属性。

PRE        { white-space: pre }
P          { white-space: normal }
TD[nowrap] { white-space: nowrap }

与CSS2一致的用户端可能忽略作者和用户样式表中的'white-space'属性,但是必须在缺省样式表中为它指定一个值。