text-indent是HTML首行缩进的唯一标准解法,推荐使用text-indent: 2em实现稳定2字符缩进;全角空格等替代方案不可靠,仅限无CSS场景临时使用。

HTML里用空格实现首行缩进不可靠
直接在文本开头加 或两个普通空格,不会产生稳定的2字符缩进效果。原因在于:HTML默认会合并连续空白符(包括空格、制表符、换行),且字体、字号、等宽/非等宽都会影响“2字符”的实际像素宽度。浏览器也不保证每个空格占相同宽度——尤其在中文字体下,全角空格( )才接近中文字符宽度,但兼容性和语义性极差。
text-indent是唯一标准解法,别绕弯子
text-indent 是CSS专为解决首行缩进设计的属性,支持 em、rem、px、ch 等单位,语义清晰、渲染稳定、可继承、无障碍友好。所谓“用空格替代 text-indent”,本质是放弃标准方案去迁就过时习惯,反而带来更多问题:
- 全角空格
在部分字体(如某些苹方变体)下宽度不等于汉字; - 响应式场景下,字号变化时,空格数无法自动适配;
- 复制粘贴时,全角空格可能被过滤或转成普通空格;
- 屏幕阅读器可能错误播报空格为“空白”或跳过。
真正可靠的 2 字符首行缩进写法
用 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场景下临时用
仅当完全无法使用CSS(如邮件模板内联限制、老旧CMS富文本编辑器强制过滤样式)时,才考虑退化方案:
- 用两个全角空格:
(不是两个 ,也不是两个半角空格); - 必须确保父容器
font-family固定且含中文字体,例如font-family: "PingFang SC", "Hiragino Sans GB", sans-serif;; - 避免嵌套
或其他行内元素打断文本流,否则缩进可能失效。
这种写法只是权宜之计,一旦有样式控制能力,立刻切回 text-indent。
最常被忽略的一点:text-indent 对 display: inline 元素无效,务必确认目标元素是块级(如 p、div)或显式设了 display: block。











