应使用语义化标签:<strong>表重要性,<em>表语气强调,<ins>/<del>表内容增删,<b>/<i>/<u>/<s>仅作纯视觉处理;嵌套须符合语义逻辑。

别用 <b> 和 <i> 做语义强调,该用 <strong> 和 <em> 的地方硬套样式标签,后期可访问性、SEO 和维护成本都会出问题。
什么时候该用 <strong> 而不是 <b>
当一段文字在逻辑上“重要”——比如错误提示、操作警告、法律条款关键句——就该用 <strong>。它传递的是语义,不是单纯加粗效果;屏幕阅读器会加重语气读出来。<b> 只是视觉加粗,没有语义权重,适合品牌名、产品名这类需要突出但不强调重要性的场景。
- 用户输入密码错误时,提示文字用
<strong>密码不正确</strong>,而非<b> - 价格标签里写“¥99”,其中“99”用
<b>纯粹为了视觉跳脱,没问题 - CSS 重置了
<strong>默认加粗?没关系,语义还在,辅助技术仍能识别
<em> 和 <i> 的分工很明确
<em> 表示内容有强调语气,比如“你真的确定要删除?”;<i> 则用于技术术语、外文词、船名、生物分类名等——它表达的是“这段文字属于另一类语言或命名体系”,不是“我想让它斜着看”。
- 文档中出现 “
<em>Please</em> confirm” 是错的,应为 “<code><i>Please</i>confirm”(外文短语) - 写 “
<em>not</em> recommended” 比 “<code><i>not</i> recommended” 更准确,因为这里是在强调否定语气</li> <li>浏览器默认都斜体,但语义不同,搜索引擎和读屏软件处理方式也不同</li> </ul> <H3><code><ins>
和<del>不只是“带下划线/删除线”的替代品它们专为内容变更设计:
<ins>表示新增内容(默认带下划线),<del>表示已删除内容(默认带删除线)。比<u>和<s>更具语义,且支持datetime属性记录修改时间。立即学习“前端免费学习笔记(深入)”;
- 合同修订稿中,用
<del datetime="2026-08-15">¥200</del><ins datetime="2026-08-20">¥180</ins>,机器可解析变更时序 -
<u>在现代 HTML 中默认被禁用(部分浏览器会忽略),除非配合style="text-decoration: underline"强制启用,但已失去语义 -
<s>仅表示“不再准确”,比如过期价格,但不说明是否被替换;<del>明确表示“已被移除”
嵌套和组合容易踩的坑
文本格式化标签可以嵌套,但必须符合语义逻辑。比如
<strong><em>紧急</em>通知</strong>合理(先强调语气,再标重要性);但<em><strong>紧急</strong>通知</em>就反了——语义层级混乱,读屏器可能重复加重。- 避免
<strong><b>.../strong>这类冗余嵌套,纯属多此一举 -
<sup>和<sub>不参与语义强调,只负责排版,可放心与<em>或<strong>组合,如 “第<strong>3</strong><sup>rd</sup>次尝试” - 所有这些标签都是行内元素,不能直接包
<p>或<div>,否则 HTML 验证失败
真正难的不是记住哪个标签怎么写,而是每次敲下
<b>前,停下来问一句:我到底想告诉机器(和人)什么? - 合同修订稿中,用



















