Skip to main content

文本

属性描述
color文本颜色
direction文本书写的方向
letter-spacing字符间距
word-spacing英文单词间距
white-space空白文本、文本换行处理方式
line-height文本行高
vertical-aligna
text-align文本水平排版
text-indent文本首行缩进
text-decoration文本的修饰线条
text-shadow文本阴影
text-transform文本英文单词字母大小写

下面只解释一些不好理解的属性。

direction

用来设置文本的方向,取值如下:

  • ltr,默认值,从左往右
  • rtl,从右往左

这个属性一般搭配 unicode-bidi: bidi-override; 一起使用:

* {
direction: rtl;
unicode-bidi: bidi-override;
}

当我们设置了上面的属性后,在块级元素内添加「文本节点」或者「内联元素」,都会从右往左排列。比如对于 input 输入框,它的光标会在右边闪动,我们输入文本时也会从右到左新增文本节点。

letter-spacing 与 word-spacing

letter 可以理解为字符,word 可以理解为英文单词:

  • letter-spacing 用来设置文本中每一个字符之间的间距
  • word-spacing 用来设置文本中每一个英文单词的间距,这个不能设置中文汉字的间距

它们的取值相同:

  • normal,默认值,字符之间默认没有额外空间,单词之间具有标准间距
  • length,长度值,一般取像素,可以是负数

white-space

用来处理文本节点的「空白文本」和「文本换行」,取值如下:

  • normal,默认值,元素中的多余空白文本会被忽略,并且文本内容超出父元素宽度时会自动换行
  • nowrap,让文本不会自动换行
  • pre,让元素内的文本处理方式类似 <pre> 标签,即空白字符会保留,不会自动换行
  • pre-wrap,保留空白字符,且会自动换行
  • pre-line,忽略多余「空格」类型的字符,保留换行符,可以自动换行

Tip:

这里的「空白字符」,主要区分为「空格」和「换行符」。

line-height

用于设置每一行文本的行高,取值如下:

  • normal,默认值,标准的文本行高
  • number行高 = 字体大小 * number
  • length,设置固定行高
  • %行高 = 字体大小 * 百分数

让一行文本垂直居中于父元素,可以设置父元素的文本行高 line-height 等于其元素高度,或者元素高度为 auto

vertical-align (困惑)

用来指定行内元素(inline)或表格单元格(table-cell)元素的垂直对齐方式,非继承属性。

text-align

指定元素内文本的对齐方式,取值如下:

  • 默认值由 direction 决定,如果是 ltr 则默认值为 left,反之为 right
  • left,文本左对齐
  • right,文本右对齐
  • center,文本居中对齐
  • justify,文本两端对齐

这里需要注意 justify 这个取值,文本两端对齐的意思是非空字符两端对齐,并且需要满足文本沾满一整行的条件,如果文本没有沾满一整行,那么 justify 对该行文本并不会起作用。如果对于单行没有沾满一整行的文本,我们想让它两端对齐,对于表单的 label 标签字段来说很常见的需求,我们可以这么做:

.text-align-justify {
text-align: justify;
overflow: hidden;

// 使用伪元素帮助文本占满其下方一整行,但是高度设置为0
&::after {
content: "";
display: inline-block;
width: 100%;
}
}

text-indent

设置文本首行缩进,取值如下:

  • length,设置固定缩进,可以是任何单位,默认值为 0
  • %,基于父元素宽度的百分比的缩进

text-decoration

text-decoration: none | [<line> <style>? <color>?];

规定添加到文本的修饰,下划线、上划线、删除线等,它是以下属性的缩写:

  • text-decoration-line,取值如下:
    • none,默认值,文本没有线条修饰
    • underline,文本下方出现一条线
    • overline,文本上方出现一条线
    • line-through,文本中间出现一条线
  • text-decoration-style,取值如下:
    • solid,默认为实线
    • double,双实线
    • dotted,点状线
    • dashed,虚线
    • wavy,波浪线
  • text-decoration-color,设置修饰线的颜色
text-decoration: underline wavy red;

对于 a 标签来说就有一个默认的 text-decoration: underline solid blue

text-shadow

用于设置文本阴影,如果具有修饰线,那么修饰线也会具有阴影,语法如下:

text-shadow: none | [<x-shadow> <y-shadow> <blur>? <color>?];

x-shadow,水平阴影偏移量,允许为负值 y-shadow,垂直阴影偏移量,允许为负值 blur,模糊距离,可以理解为阴影在 z 轴上离文本有多远,越远阴影越模糊 color,阴影的颜色

color: white;
text-shadow: 2px 2px 4px #000000;

text-transform

规定文本中每个单词的字母大小写规则:

  • none,默认值
  • capitalize,所有单词首字母大写
  • uppercase,所有单词所有字母都大写
  • lowercase,所有单词字母小写

CSS3 文本新增特性