<p>默认上下外边距导致空白,本质是CSS而非HTML;禁止嵌套块级元素;align已废弃,须用text-align;非段落内容勿滥用<p>。

为什么直接写 <p> 会多出空白?
因为浏览器默认给 <p> 加了上下外边距(margin-top: 1em 和 margin-bottom: 1em),不是你写错了,是它本来就这样。这个“空白”本质是 CSS 默认样式,不是 HTML 本身产生的空行。
- 即使段落里只有一两个字,
<p>好</p>也会占一整行并上下留空 - 连续写两个
<p>,比如<p>A</p><p>B</p>,实际渲染出的间距 ≈ 2em(上一个的下边距 + 下一个的上边距),不是 1em - 想彻底去掉空白?用 CSS:
p { margin: 0; }—— 但别全局清,容易破坏语义结构
嵌套 <div> 或 <h2> 会怎样?
会触发 HTML 解析警告,甚至被浏览器自动修正——比如把 <p><div>xxx</div></p> 拆成 <p></p><div>xxx</div><p></p>,内容“掉出来”了。
-
<p>只能包含行内元素:<span>、<a>、<img>、<strong>都可以 -
<div>、<ul>、<h1>~<h6>、另一个<p>都不允许嵌套在<p>里 - 检查方式很简单:贴代码到 W3C Markup Validation Service,立刻报错
对齐文字还能用 align 属性吗?
不能。align 是 HTML4 就废弃的属性,HTML5 完全不支持。现在写 <p align="center">,浏览器会忽略它,毫无效果。
- 正确做法是用 CSS:
<p style="text-align: center">或统一写在<style>里 - 注意:
text-align控制的是**段落内文字**对齐,不是整个<p>块在页面中的位置(那得靠margin或 Flex/Grid) - 中文排版常见需求如首行缩进,要用
text-indent: 2em,不是靠空格或<pre>
什么时候不该用 <p>?
当内容不是真正意义上的“段落”时——比如按钮文字、导航项、表格标题、单行说明、纯图标配文。硬套 <p> 会污染语义,影响 SEO 和屏幕阅读器理解。
立即学习“前端免费学习笔记(深入)”;
- 短标签/说明文字,优先考虑
<span>+ CSS;需要块级表现就用<div> - 想换行但不要段落语义?用
<br>,别写<p></p>冒充空行 - 诗句、代码、地址等需保留换行和空格的文本,用
<pre>更合适,<p>会把所有换行和多余空格压成一个空格
最常被忽略的一点:段落语义不是装饰,而是结构信号。搜索引擎、语音助手、无障碍工具都依赖它判断内容主次。写对 <p> 不是为了“看起来像段落”,而是为了让机器也读得懂你在讲什么。


















