应使用 text-indent 实现段落首行缩进,因其专为此设计;::first-line 仅支持文本样式,不支持 margin、padding 等布局属性,设置无效。
用
而不是
实现段落首行缩进
伪元素
用于选中段落的**第一行文本内容**,但它不控制布局偏移,只影响字体、颜色、背景等文本样式。想让整行向右“空出两个字位置”,必须用
——这是专为此设计的 CSS 属性。
的基本写法和常见单位
它作用于块级元素(如
、
),对首行第一个字符前插入空白。常用值:
:最稳妥,1em ≈ 当前字体大小,兼容中英文混排
:像素值固定,但响应式场景下可能失配字号变化
:按字符宽度缩进(
单位以
宽度为基准),适合等宽字体环境
负值如
可实现悬挂缩进(首字凸出)
为什么不用
加
或
?
是伪元素,不能设置盒模型属性(
、
、
等均无效)。以下写法不起作用:
即使加上
,也会破坏行内流式布局,导致换行异常或截断。
Comet AI 浏览器
下载 Comet AI 浏览器,体验由 Perplexity AI 驱动的革命性上网方式。内置 AI 助手可实时总结网页、跨标签页对比信息、自动执行任务。告别繁琐操作,让 AI 成为你的浏览副驾,大幅提升研究与工作效率。支持 Windows、macOS、Android 和 iOS。
下载
立即学习
“
前端免费学习笔记(深入)
”;
注意
的边界行为
它只影响“视觉首行”,受这些因素影响:
当段落开头是
、
等内联元素时,缩进仍生效
若首行有浮动元素(
),缩进起点会从浮动元素右侧开始计算
在 flex 或 grid 容器中,
对子项无效(需作用于内部的
元素本身)
部分中文排版需求(如标点悬挂)需配合
,与
无关
实际缩进效果取决于字体渲染和
浏览器
对
的解析精度,尤其在小字号或 WebFont 加载未完成时可能出现微小偏差。
text-indent::first-line::first-linetext-indenttext-indentpdivtext-indent: 2emtext-indent: 32pxtext-indent: 2chch"0"text-indent: -1em::first-linemargin-leftpadding-left::first-linemarginpaddingwidth/* ❌ 无效 */
p::first-line {
margin-left: 2em;
padding-left: 2em;
width: 100%;
}display: inline-blocktext-indentfloat: lefttext-indentphanging-punctuationtext-indentem