将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
text-indent 是唯一正确的首行缩进属性,仅推第一行且适配中文空两格;必须用于 display: block 元素,单位用 2em,flex 或 table-cell 中失效时改用 padding-left: 2em。

别从 padding-left 或 margin-left 开始学,那不是缩进,是平移——会把整段文字连同第二行一起拽过去,破坏对齐、挤爆容器、小屏直接溢出。
text-indent 是唯一该学的首行缩进属性
它只推第一行开头,其余行纹丝不动,天生适配中文“空两格”习惯。新手最容易栽在“写了没反应”,其实问题几乎都出在渲染条件上:
-
text-indent只对display: block元素生效;如果<p></p>被设成inline或被父级flex容器压制,它就彻底失能 - 单位必须用
2em:1em ≈ 当前字号,放大字体时缩进同步变宽,始终像“两个汉字”,比32px或2%稳得多 - 别信“默认就有”,浏览器给
p的默认样式里text-indent是0,不写就是没缩进 - 临时加
background: #ff0到p上,看文字是否真往右偏移——背景框里文字还贴左?说明根本没生效
为什么 flex 容器里 text-indent 常失效
不是你写错了,是 flex 改变了格式化上下文:<p></p> 在 flex 里变成 flex item,text-indent 的语义退化了。这时候硬加 display: block 有时能救,但不可靠。
- 更直接的做法:改用
padding-left: 2em——它不依赖“首行盒”,对任何display类型都生效 - 注意副作用:
padding-left会让整段左移,若用了text-align: justify,两端对齐可能被破坏 - 如果只是导航栏或卡片标题里误用了
<p></p>,别缩进——那是间距问题,该调margin或gap
表格单元格(<td>)里怎么安全缩进
<p><code><td> 默认是 <code>display: table-cell,不生成标准“首行盒”,text-indent 在短文本、居中对齐或富文本输出下极易失效。
- 最稳妥方案:
td, th { padding-left: 2em; } —— 所有浏览器都认,导出 PDF 也稳
- 若必须保留首行缩进语义(比如印刷规范要求),就包一层
<div style="text-indent: 2em;">,让 <code>div 承担语义,td 只管布局
- 调试时直接看 Computed 面板里的
padding-left 值,别纠结 text-indent 是否被计算
真正难的不是记住 text-indent: 2em 这一行,而是每次加完都打开开发者工具,盯着 Computed 面板确认三件事:display 是 block、text-indent 计算值非零、没有 !important 覆盖。环境一换,规则就可能悄悄绕过你——Flex、表格、富文本、SSR 渲染,每个都可能让缩进“看起来没动”。
td, th { padding-left: 2em; } —— 所有浏览器都认,导出 PDF 也稳<div style="text-indent: 2em;">,让 <code>div 承担语义,td 只管布局
padding-left 值,别纠结 text-indent 是否被计算真正难的不是记住 text-indent: 2em 这一行,而是每次加完都打开开发者工具,盯着 Computed 面板确认三件事:display 是 block、text-indent 计算值非零、没有 !important 覆盖。环境一换,规则就可能悄悄绕过你——Flex、表格、富文本、SSR 渲染,每个都可能让缩进“看起来没动”。










