文本

属性说明

text-align

text-align 用于定义元素内容的水平对齐方式。

可取属性值:

属性值说明
left内容左对齐
center内容居中对齐
right内容右对齐
justify内容两端对齐,但对于强制打断的行(被打断的这一行)及最后一行(包括仅有一行文本的情况,因为它既是第一行也是最后一行)不做处理
start内容对齐开始边界
end内容对齐结束边界
match-parent这个值和 inherit 表现一致,只是该值继承的 startend 关键字是针对父母的 direction 值并计算的,计算值可以是 leftright
justify-all效果等同于 justify,不同的是最后一行也会两端对齐

单行文本两端对齐

  1. 首先,所有主流浏览器都支持 text-alignjustify 属性值
  2. 其次,在这个例子中每个 p 都只有一行(所以既是第一行也是最后一行),所以无法通过定义 text-align: justify 来实现两端对齐,因为 text-align: justify 不会处理块级内容文本的最后一行
  3. 再次,好在有一个专门用来处理最后一行对齐的属性 text-align-last,可以通过定义 text-align-last: justify 来实现单行文本两端对齐
  4. 综上所述,我们无法简单的通过使用 text-align 或者 text-align-last 来实现单行文本两端对齐。那么可以换个思路,想办法让它们变成多行文本,使用伪元素派生一行新的占位内容是个不错的选择,此时再实现两端对齐,只需要 text-align 就行了

vertical-align

vertical-align 用于定义行内元素在行框内的垂直对齐方式。

属性值说明
baseline把当前盒的基线与父级盒的基线对齐。如果该盒没有基线,就将底部外边距的边界和父级的基线对齐
sub把当前盒的基线降低到合适的位置作为父级盒的下标(该值不影响该元素文本的字体大小)
supr把当前盒的基线提升到合适的位置作为父级盒的上标(该值不影响该元素文本的字体大小)
text-top把当前盒的 top 和父级的内容区的 top 对齐
text-bottom把当前盒的 bottom 和父级的内容区的 bottom 对齐
middle把当前盒的垂直中心和父级盒的基线加上父级的半 x-height 对齐
top把当前盒的 top 与行盒的 top 对齐
bottom把当前盒的 bottom 与行盒的 bottom 对齐
<percentage>把当前盒提升(正值)或者降低(负值)这个距离,百分比相对 line-height 计算。当值为 0%时等同于 baseline
<length>把当前盒提升(正值)或者降低(负值)这个距离。当值为 0 时等同于 baseline

text-decoration

text-decoration 为简写属性,用于定义元素文本装饰。

语法:

text-decoration: <text-decoration-line> | <text-decoration-style> | <text-decoration-color>

对于 <text-decoration-line> 的可取属性值:

属性值说明
none文字无装饰
underline文字的装饰是下划线
overline文字的装饰是上划线
line-through文字的装饰是贯穿线
blink文字的装饰是闪烁

对于 <text-decoration-style> 可取的属性值:

属性值说明
solid实线
double双线
dotted点状线条
dashed虚线
wavy波浪线

CSS 文字装饰 text-decoration & text-emphasis

text-transform

text-transform 用于定义元素的文本如何转换大小写。

属性值说明
none无转换
capitalize将每个单词的第一个字母转换成大写
uppercase将每个单词转换成大写
lowercase将每个单词转换成小写
full-width将所有字符转换成 fullwidth 形式。如果字符没有相应的 fullwidth 形式,将保留原样。这个值通常用于排版拉丁字符和数字等表意符号

text-justfy

text-justify 用于定义使用什么方式实现文本内容两端对齐。

属性值说明
auto允许浏览器用户代理确定使用的两端对齐法则
none禁止两端对齐
inter-word通过增加字之间的空格对齐文本。该行为是对齐所有文本行最快的方法,它的两端对齐行为对段落的最后一行无效
inter-ideograph为表意字文本提供完全两端对齐,增加或减少表意字和词间的空格
inter-cluster调整文本无词间空格的行。这种模式的调整是用于优化亚洲语言文档的
distribute通过增加或减少字或字母之间的空格对齐文本,适用于东亚文档,尤其是泰国
kashida通过拉长选定点的字符调整文本。这种调整模式是特别为阿拉伯脚本语言提供的

注意事项:

  • 因为这个属性影响文本布局,所以 text-align 属性必须设置为 justify

text-indent

text-indent 用于定义块内文本内容的缩进。

属性值说明
<length>用长度值指定文本的缩进。可以为负值
<percentage>用百分比指定文本的缩进。可以为负值
each-line定义缩进作用在块容器的第一行或者内部的每个强制换行的首行,软换行不受影响
hanging反向所有被缩进作用的行

注意事项:

  • 行内元素要使用该属性必须先定义该元素为块级或行内块级
  • hangingeach-line 关键词紧随在缩进数值之后

示例:

div {
text-indent: 2em each-line;
}

text-overflow

text-overflow 用于当块容器 overflow 为非 visible 时,定义内联内容溢出其块容器是否截断或者添加 ... 及自定义字符。

属性值说明
clip当内联内容溢出块容器时,将溢出部分裁切掉
ellipsis当内联内容溢出块容器时,将溢出部分替换为 ...

注意事项:

  • 要使得 text-overflow 属性生效,块容器必须显式定义 overflow 为非 visible 值,同时显式或者隐式地定义 width 为非 auto 值,white-spacenowrap

letter-spacing

letter-spacing 用于指定字符之间的额外间隙。

可取属性值:

属性值说明
none默认间隔,计算值为 0
<length>用长度值指定字符间隔。可以为负值

注意事项:

  • 该属性可以将指定的额外间隔添加到每个字符之后,最后一个单词也会被添加

word-spacing

word-spacing 用于指定单词之间的额外间隙。

属性值说明
none默认间隔,计算值为 0
<length>用长度值指定字符间隔。可以为负值
<percentage>用百分比指定字符间隔。可以为负值

注意事项:

  • 该属性可以将指定的额外间隙添加到每个单词之后,最后一个单词不添加,这意外着可以通过该属性控制单词间的间隙大小
  • 判断是否为单词的依据是单词间是否有单词分割符,比如:空格

word-wrap

word-wrap 用于设置或检索当内容超过指定容器的边界时是否断行。

属性值说明
normal允许内容顶开或溢出指定的容器边界
break-word内容将在边界内换行,如果需要,单词内部允许断行。
它要求一个没有断行破发点的词必须保持为一个整体单位,如果当前行无法放下需要被打断的单词,为了保持完整性,会将整个单词放到下一行进行展示

word-break

word-break 用于定义元素内容文本的字间与字符间的换行行为。

属性值说明
normal默认的换行规则。依据各自语言的规则,允许在字间发生换行
keep-all对于 CJK(中文,韩文,日文)文本不允许在字符内发生换行,Non-CJK 文本表现同 normal
break-all对于 Non-CJK 文本允许在任意字符内发生换行。该值适合包含一些非亚洲文本的亚洲文本,比如使连续的英文字符断行
break-wordbreak-all 相同,不同的地方在于它要求一个没有断行破发点的词必须保持为一个整体单位。这与 word-wrapbreak-word 值效果相同

white-space

white-space 用于指定元素是否保留文本间的空格、换行;指定文本超过边界时是否换行。

属性值说明
normal默认处理方式。会将序列的空格合并为一个,内部是否换行由换行规则决定
pre原封不动的保留你输入时的状态,空格、换行都会保留,并且当文字超出边界时不换行。等同 <pre> 元素效果
nowrapnormal 值一致,不同的是会强制所有文本在同一行内显示
pre-wrappre 值一致,不同的是文字超出边界时将自动换行
pre-linenormal 值一致,但是会保留文本输入时的换行

line-height

相关属性:line-height

  • 行高由 line-box 决定
  • line-hight 会撑起 inline-box 的高度,并不会影响本身布局的高度,但是会影响外部元素(line-box)
  • inline-box 组成 line-boxline-box 高度是由 inline-box 决定

现象

  • 一般做垂直居中用 line-height 做就行了
  • 默认情况是按照 base-line 对齐,如果要居中对齐就用 vertical-align: middle
  • 底线、顶线和文字的顶和文字的底是不一样的

图片间隙问题

原理:按照 inline 排版,如果按照 inline 排版的话,默认按照基线排版(base-line)

基线和底线之间有距离的,如果 12px 字体那么缝隙可能就是 3px 解决方案:按照底线对齐,vertical-align: bottom 或者 display:block