CSS 文本缩进text-indent属性

在CSS中,使用 text-indent属性,可以让元素第一行缩进一个给定的宽度,可能是最常见的文本格式化效果。语法格式为:

text-indent: |

也就是说,可以使用长度值或百分比来设置文本缩进,长度值可以使用绝对单位或相对单位。当使用相对单位 em 时,缩进的宽度为字符宽度的倍数,字符宽度根据当前元素的 font-size 属性计算得到。

当然,这个属性最常见的用途,是让段落的首行缩进一个给定的宽度。如,以下规则会使所有段落的首行缩进 2 个字符的宽度:


  1. p {
  2.    text-indent: 2em;
  3. }

当使用百分比时,缩进宽度根据元素父元素的宽度计算得到。换句话说,如果将缩进值设置为 20%,则所影响元素的第一行会缩进其父元素宽度的 20%。

不过,在使用百分比时,需要注意的是,text-indent属性具有继承性,而子元素继承的是 text-indent属性的计算结果,而不是百分比的值。考虑如下代码:


  1.     使用百分比时,…,则缩进父元素宽度的 20%。
  2.    

    在使用百分比时,…,它可能会出现预料不到的效果。


  1. article {
  2.     width: 500px;
  3.     text-indent: 10%;
  4.     border: 1px solid #ccc;
  5. }
  6. p {
  7.     width: 400px;
  8. }

上述代码中,article元素的宽度为500px,并设置文本缩进为 10%。根据继承性,p 元素会继承 article 元素的 text-indent属性。运行结果如图 3‑11 所示:

CSS 文本缩进text-indent属性_第1张图片图3-11 text-indent属性继承

从上图可以看出,子元素 p 与父元素 article 的文本缩进宽度相同,因为子元素继承的是 text-indent属性的计算结果 50px,而不是百分比的值 10%。

除了使用正值产生缩进效果外,还可以把 text-indent属性设置为负值,来实现一些很有用的效果,比如悬挂缩进的效果:


  1. p {
  2.     text-indent: -2em;
  3. }

上述规则会使所有段落的首行悬挂缩进 2 个字符的宽度。当然,有时候,希望文本不可见,也可以使用 text-indent属性把文本显示到屏幕之外。

不过,在为 text-indent属性设置负值时要当心,如果对段落设置了负缩进,那么首行的某些文本可能会超出窗口的左边界。为了避免出现这种问题,建议针对负缩进再设置适当的外边距或内边距。

注意:

一般来说,可以为所有块级元素应用 text-indent属性,但无法将该属性应用于行内元素、及图像之类的替换元素。但是,如果一个块级元素的首行中有一个图像,图像也会随该行的其余文本而移动。

关于作者

歪脖先生,十五年以上软件开发经验,酷爱Web开发,精通 HTML、CSS、JavaScript、jQuery、JSON、Python、Less、Bootstrap等,著有《HTML宝典》、《揭秘CSS》、《Less简明教程》、《JSON教程》、《Bootstrap2用户指南》、《Bootstrap3实用教程》,并全部在 GitHub 上开源。

你可能感兴趣的:(揭秘,CSS)