text-indent是HTML首行缩进的唯一标准解法,推荐使用text-indent: 2em实现稳定2字符缩进;全角空格等替代方案不可靠,仅限无CSS场景临时使用。
直接在文本开头加 或两个普通空格,不会产生稳定的2字符缩进效果。原因在于:HTML默认会合并连续空白符(包括空格、制表符、换行),且字体、字号、等宽/非等宽都会影响“2字符”的实际像素宽度。浏览器也不保证每个空格占相同宽度——尤其在中文字体下,全角空格( )才接近中文字符宽度,但兼容性和语义性极差。
text-indent 是CSS专为解决首行缩进设计的属性,支持 em、rem、px、ch 等单位,语义清晰、渲染稳定、可继承、无障碍友好。所谓“用空格替代 text-indent”,本质是放弃标准方案去迁就过时习惯,反而带来更多问题:
在部分字体(如某些苹方变体)下宽度不等于汉字;用 text-indent: 2em —— 这里的 em 基于当前元素的 font-size,1em ≈ 当前字号宽度,对中文字体而言,恰好约等于一个汉字的宽度:
article p {
text-indent: 2em;
margin: 0;
}
如果需要更精确控制(比如严格匹配等宽字体下的2个中文字符),可用 ch 单位(1ch = 当前字体中 “0” 字符的宽度,通常接近汉字):
立即学习“前端免费学习笔记(深入)”;
p {
text-indent: 2ch;
}
注意:ch 在旧版 Safari(≤15.4)和 IE 中不支持,生产环境建议优先用 2em。
仅当完全无法使用CSS(如邮件模板内联限制、老旧CMS富文本编辑器强制过滤样式)时,才考虑退化方案:
(不是两个 ,也不是两个半角空格);f
ont-family 固定且含中文字体,例如 font-family: "PingFang SC", "Hiragino Sans GB", sans-serif;; 或其他行内元素打断文本流,否则缩进可能失效。这种写法只是权宜之计,一旦有样式控制能力,立刻切回 text-indent。
最常被忽略的一点:text-indent 对 display: inline 元素无效,务必确认目标元素是块级(如 p、div)或显式设了 display: block。