HTML中首行缩进应使用text-indent属性,如text-indent: 2em,它专为此设计、缩放友好且仅影响首行;避免用多余空格、margin-left或padding-left,以免错位或整段偏移。

HTML里空格被合并是默认行为
浏览器渲染时会把连续的空白字符(空格、制表符、换行)压缩成单个空格,所以直接敲多个 或空格键,首行缩进效果不可靠,尤其在响应式或不同字体下容易错位。
用text-indent最稳妥
这是专为段落首行缩进设计的CSS属性,不受空白符处理影响,且可精确控制像素或相对单位:
<p style="text-indent: 2em;">这段文字首行会缩进两个字符宽度</p>
-
2em是推荐值,对应当前字体大小的两倍,语义清晰、缩放友好 - 避免用
px(如32px),字体放大时缩进会僵硬 - 注意:
text-indent只作用于第一行,不影响后续行
需要保留多空格时用 或<pre>
仅当内容本身含语义化空格(如代码片段、诗歌排版)才考虑:
- 单个空格用
,多个就堆叠:(不推荐用于缩进,易失控) - 整段需保留空白格式,用
<pre>标签,但会禁用自动换行和常规字体设置 -
<span style="white-space: pre;"> 这里空格生效</span>可局部启用空格保留
别踩margin-left或padding-left的坑
这两个属性会整体偏移整段文字,不是“首行缩进”,会导致:
立即学习“前端免费学习笔记(深入)”;
- 左边界对不齐其他段落
- 若段落有背景色或边框,视觉上像整块左移
- 与列表项、引用块等混合排版时容易错层
真正要的是“首行向右推”,不是“整段向右挪”——这点很容易混淆。
复杂点在于:如果段落内含行内元素(比如<strong>开头),text-indent仍只作用于纯文本首行;而用<pre>又得手动处理换行和字体继承。多数场景下,老老实实用text-indent最省心。



















