段落“粘连”是因重置CSS清除了p默认margin,导致无呼吸空间;应检查computed styles确认是否为0px,并用p{margin:1em 0}显式设置,避免依赖默认值。

浏览器给 <p></p> 设了默认 margin-top 和 margin-bottom,但项目里常引入重置 CSS(比如 normalize.css)或自定义样式,一不留神就把这个 margin 清掉了,导致段落“粘连”——这不是你漏写了缩进,而是段落本身失去了呼吸空间。
检查 computed styles 确认 margin 是否被清零
打开浏览器开发者工具 → 选中目标 <p></p> → 切到 Computed 标签页 → 搜索 margin-top 和 margin-bottom。如果值是 0px,说明确实被覆盖了。
- 别只看 Styles 面板里的规则,有些重置是通过
* { margin: 0; }或body * { margin: 0; }这类宽泛选择器生效的 - 注意
margin-collapse:相邻<p></p>的上下 margin 会合并,不是 bug,是 CSS 规范行为 - 若要等距分隔,改用
padding-bottom: 1em或把父容器设为display: flex; gap: 1em;
显式声明 p { margin: 1em 0; } 更可靠
依赖浏览器默认值风险高,尤其在跨团队、跨框架协作时。直接写死更可控:
p {
margin: 1em 0;
}-
1em比16px更健壮,随font-size缩放,适配系统字号放大或响应式切换 - 避免用
margin: 0 0 1em 0这种冗余写法,margin: 1em 0已明确上下、左右 - 若需首段顶头(如文章标题后),单独加类:
<p class="no-top-margin"></p>+.no-top-margin { margin-top: 0; }
text-indent 失效?先确认元素是不是块级
text-indent 只对块级元素生效。常见失效场景:
立即学习“前端免费学习笔记(深入)”;
将 Markdown 文章转换为微信公众号兼容的纯 HTML 格式。当用户要求"转成微信格式"、"生成公众号文章 HTML"、"排版到微信草稿箱"、"微信粘贴格式"时触发。输出带内联样式的纯 HTML,微信编辑器可直接渲染,无需额外适配。支持标题、段落、列表、粗体、行内代码、表格、引用块、代码块、配图的完整转换。
-
<p></p>被设成display: inline或inline-block—— 浏览器不生成“首行盒”,缩进无处作用 - 父容器是
display: flex或display: grid,子<p></p>的块级行为被格式化上下文压制 - 段落开头是
<img alt="HTML段落缩进被默认样式覆盖怎么处理" >或<svg></svg>这类内联替换元素,缩进发生在该元素左侧,视觉上等于没动 - 某处写了
p { text-indent: 0 !important }(富文本编辑器输出常带这个)
最快验证方式:开发者工具 → Computed → 确认 display 是 block,且 text-indent 最终值不是 0。
中文首行缩进用 2em,别碰百分比和负值
中文排版习惯首行空两字,但单位选错就白搭:
- 用
2em:1em ≈ 当前font-size,缩进随字号变化,移动端、系统放大都稳 - 别用
2ch:IE 不支持,且多数中文字体下 1ch 远小于一个汉字宽度 - 避开
2%:按父容器宽度算,窄屏下缩进可能只剩几像素 - 慎用
2rem:若项目用 JS 动态改html { font-size }(如夜间模式),缩进会意外跳变 - 绝对别用负值或
text-indent: -1em兼容 IE8 —— 它对负值支持极不稳定,尤其配合direction: rtl时容易错位
真正难处理的,从来不是写哪一行 CSS,而是团队里有人用 Prettier 自动删掉 margin、有人在全局样式里塞 * { margin: 0 }、还有人把 <p></p> 塞进 flex 容器还指望 text-indent 正常工作——这些地方不盯紧,样式就永远在“看起来差不多”和“上线崩了”之间反复横跳。


















