应优先用表达语气强调或重要性,屏幕阅读器重读、seo加权;仅用于外文词、学名等无强调意图的斜体文本,纯表现需求须用css控制。

什么时候该用 <i></i> 而不是 <em></em>
直接看语义:想表达“这个词在语境中需要被加重读出”——用 <em></em>;只是因为排版惯例要斜体,但读起来不重、不强调——才用 <i></i>。
比如 <em>必须</em> 会让屏幕阅读器抬高语调,而 <i>HTTP</i> 只是告诉辅助技术“这是个协议名,按惯例斜体”,不会改变语音节奏。
-
<em></em>适合:错误提示里的「密码不匹配」、操作指引中的「点击确认」 -
<i></i>合理场景:生物名<i>Felis catus</i>、书名<i>The Great Gatsby</i>、外文短语<i>et al.</i> - 反例:按钮文字写成
<button><i>提交</i></button>—— 没语义,还可能让读屏器误读为“斜体字”而非可操作项
<i></i> 和 font-style: italic 的本质区别
<i></i> 是 HTML 元素,有明确语义定位(HTML5 定义为 “idiomatic text”);font-style: italic 是纯样式声明,对辅助技术完全透明。
视觉上可能一样,但底层行为完全不同:浏览器会为 <i></i> 触发默认样式(即 font-style: italic),但你也可以用 CSS 把它设成直体,语义依然保留;反过来,给普通 <span></span> 加 font-style: italic,再怎么斜,也传达不了“这是个术语”的信息。
- 字体渲染差异:
font-style: italic优先调用字体中真实设计的斜体字形;若缺失,浏览器 fallback 到oblique(机械倾斜),笔画易糊。而<i></i>不影响字体选择逻辑,它只触发样式规则 - 可访问性影响:
<i></i>会被读屏软件识别为一类特殊文本,但不会改变语音重音;font-style: italic则完全不被感知
哪些地方绝对不能只靠 <i></i> 传关键信息
斜体是纯视觉线索,WCAG 明确禁止将其作为信息传达的唯一方式。一旦脱离视觉,信息就断了。
- 表单必填标记:仅用
<i>*</i>表示必填,却不加required属性或aria-required="true"→ 表单验证和读屏行为脱节 - 状态提示:表格里写
<td><i>暂无数据</i></td>,没配aria-live或显式占位文案 → 视力障碍用户完全感知不到空状态 - 图标字体:写
<i class="icon-user"></i>却忘了加aria-hidden="true"→ 屏幕阅读器可能朗读类名或空白
现代项目里要不要继续用 <i></i>
可以,但得有意识地用。如果团队已统一用 CSS 类(如 .term、.title)控制术语/作品名样式,那 <i></i> 就没必要出现——语义由 class 承载,样式由 CSS 控制,更灵活也更可控。
但 CMS 或富文本编辑器输出的内容,运营人员习惯点“斜体按钮”输外文或书名,保留 <i></i> 反而比强制转成 <span class="term"></span> 更符合直觉和协作流。
真正容易被忽略的是:很多项目把所有斜体都塞进 <i></i>,只图代码“看起来整齐”,结果结构语义全丢,后续做无障碍审计或 SEO 优化时才发现补不回来。











