html文本标签须按语义使用:/表重要性/语气,/需成对体现编辑,表附属细则,/用于化学数学式,仅表非标准文本,废弃等标签。

别直接抄“最全列表”,实际开发中真正高频、有语义差异、容易用错的就那十几个,其余多数已废弃或纯装饰性。
哪些文本标签必须用语义,不能只看样式
浏览器和屏幕阅读器靠语义理解内容意图,<strong></strong> 和 <b></b> 都加粗,但前者表示“内容重要”,后者只是“视觉加粗”;同理 <em></em> 是强调语气(会改变语音语调),<i></i> 只是斜体(比如外文术语、船名、思想实验名)。搜索引擎和无障碍工具会据此加权,滥用 <b></b> 或 <i></i> 会导致语义丢失。
- 用
<strong></strong>替代<b></b>,除非你明确只要样式、不带重要性含义 - 用
<em></em>替代<i></i>,除非是技术名词、分类名、生物拉丁名这类约定俗成的斜体场景 -
<ins></ins>和<del></del>必须成对出现才体现编辑意图,单独用<del></del>不如用 CSS 删掉线更可控
<small></small> 不是缩小字号,<sub></sub>/<sup></sup> 也不是排版技巧
<small></small> 在 HTML5 中语义是“附属细则”,比如版权信息、免责声明、法律条款——它本意不是“让字变小”,而是“这段话地位更低”。浏览器默认缩放只是实现方式,CSS 覆盖后仍需保留该语义。同理,<sub></sub> 表示下标(如 H2O),<sup></sup> 表示上标(如 E = mc2),它们影响文本流位置,不是靠 font-size: 0.7em 模拟出来的。
- 避免用
<small></small>做按钮文字或提示语,那是 CSS 的事 - 数学/化学式必须用
<sub></sub>/<sup></sup>,否则无法被公式解析器识别 - 浏览器对
<small></small>的默认尺寸在不同 UA 中不一致,建议始终配合font-size重置
废弃标签和危险替代方案
<u></u> 在 HTML4 中是“下划线”,但因与超链接混淆被弃用;HTML5 重新启用,但语义变为“非标准文本”,比如拼写错误、专有名词标注、双关语等。日常用下划线请走 CSS:text-decoration: underline。同样,<font></font>、<center></center>、<strike></strike> 全部废弃,强行使用会导致校验失败,且现代浏览器可能忽略其渲染逻辑。
- 不要用
<u></u>做链接样式,链接该用<a></a>+ CSS -
<strike></strike>已被<del></del>取代,继续用会触发兼容警告 - 所有样式控制请交由 CSS,HTML 只负责“这是什么”,不负责“它长什么样”
容易被忽略的细节:空格、换行与嵌套限制
HTML 会把连续空白符(空格、制表、换行)压缩成一个空格,所以 <p>Hello<br>World</p><div class="aritcle_card flexRow artxards">
<div class="artcardd flexRow">
<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill3458" title="html-ppt-to-pdf"><img
src="https://img.php.cn/upload/skill/000/000/081/178956546773641.jpg" alt="html-ppt-to-pdf" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a rel="nofollow" href="/xiazai/skill3458" title="html-ppt-to-pdf" class="overflowclass">html-ppt-to-pdf</a>
<p class="overflowclass">将使用 `<section class="slide">` 约定的 HTML 幻灯片转换为高保真、矢量文本 PDF(使用 Playwright + Chromium 原生 PDF 功能)。</p>
</div>
<a rel="nofollow" href="/xiazai/skill3458" title="html-ppt-to-pdf" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
</a>
</div>
</div> 和
<p>Hello<br>World</p>效果一样,但
<p>Hello\nWorld</p> 在源码里换行,渲染时仍是连着的。另外,像 <p></p> 这类块级元素内部不能嵌套 <p></p>,<h1></h1> 里也不能放 <div>(除非是 HTML5 的 sectioning content 场景),否则解析器会自动闭合前一个标签,导致 DOM 结构意外断裂。
<ul>
<li>需要保留原文空格/缩进,请用 <code><pre class="brush:php;toolbar:false;"></pre> 或 CSS white-space: pre-wrap
<br>,但别用它代替语义化分段










