HTML格式化标签分语义型(如、、、<ins>)与纯样式型(如、、<s>、<u>),前者传达内容重要性、强调、修订等含义,影响无障碍访问和SEO;后者仅控制外观,无语义。

HTML标签本身不区分“格式化”和“非格式化”,所谓“格式化标签”只是语义上偏重文本呈现效果的一组行内元素,它们和其他标签一样,都受HTML规范约束、CSS可覆盖、浏览器默认样式可干预。
为什么和都加粗,但不该混用
浏览器默认把 <strong> 和 <b> 都渲染为加粗,但语义完全不同:<strong> 表示内容重要性高(影响屏幕阅读器、SEO权重),<b> 仅表示视觉加粗(无语义)。实际项目中容易踩的坑是:用 <b> 替代标题或强调词,导致无障碍访问失败或搜索引擎忽略关键信息。
- 搜索结果页标题常用
<strong>包裹关键词,不是为了加粗,而是告诉爬虫“这是用户搜的词” - 纯装饰性加粗(比如 logo 文字、按钮文案)可用
<b>,但更推荐用 CSS 的font-weight - 若用
<b>做语义强调,审查工具(如 axe)会报 warning
em 和的斜体差异常被忽略
<em> 是“强调”,有语音语调变化(屏幕阅读器会加重读音),<i> 是“非文本语义的斜体”,比如外文词、生物名、船名。错误用法是把所有斜体都写成 <i>,结果导致辅助技术无法识别逻辑重点。
- “这个功能暂时不可用”——用
<em>,因为“暂时”是语气重心 - “学名:Canis lupus familiaris”——用
<i>,因属名惯例斜体,无强调意图 - CSS 中统一设
i, em { font-style: italic; }没问题,但 HTML 结构不能反向混淆语义
del/s、ins/u 这类“对比型标签”必须成对出现才有意义
<del> 和 <s> 都画删除线,但 <del> 表示内容被移除(有修订历史含义),<s> 仅表示不再准确(如过期价格)。同理,<ins> 是“插入内容”,<u> 在 HTML5 中已弱化语义,仅保留“拼写错误”或“专有名词”等极少数场景,且现代项目基本用 CSS text-decoration: underline 替代。
立即学习“前端免费学习笔记(深入)”;
- 电商价签写成
<del>$199</del> <ins>$149</ins>,既表达变更,又方便 JS 提取新旧值 - 用
<u>标拼写错误需配合spellcheck="false",否则浏览器可能自动纠错 -
<s>不该用于“促销划掉原价”,那是内容变更,不是事实失效
真正难的不是记住哪些标签能加粗或画线,而是每次敲下 <b> 或 <i> 时,得问一句:这里需要的是视觉效果,还是语义传达?后者一旦写错,后期靠 CSS 或 JS 很难补救。



















