应优先用em,因其传达语义强调,使屏幕阅读器重读、SEO识别重点;i仅用于外文词、术语等无强调意图的惯例斜体场景。
em 还是 i?先看语义意图不是“哪个能变斜体”,而是“你想告诉机器什么”。em 告诉浏览器和读屏软件:“这个词需要被重读”;i 只说:“它按惯例该斜着写”。搜索引擎、无障碍工具、语音合成器全靠这个区别做判断。
常见误用场景:
<i>JavaScript</i> 介绍语言——错,没传达强调意图,应改用 <em>JavaScript</em>
<em>draft</em> 表示文档状态——错,draft 是惯例性标签,不需语气强调,该用 <i>draft</i>
em 设为 font-style: normal 后发现文字不斜了——正常,em 的语义不绑定样式;而 i 更“顽固”,即使 CSS 重置也常保持斜体(因它本就是样式导向)em 的嵌套会改变语调强度吗?会,但不是“更斜”或“更粗”。主流读屏软件(如 NVDA、VoiceOver)对嵌套的 em 有层级响应:单层 <em>快</em> 可能略加重音,双层 <em>快<em>走</em></em> 会增加停顿或提升语调变化幅度。
但注意:
立即学习“前端免费学习笔记(深入)”;
em em 不会自动加粗或放大strong 配合表达i?W3C 明确定义了 i 的合理使用边界,不是“随便斜一下”都能用它:
<i>DOM</i> 树由节点构成
<i>et al.</i>、<i>caveat emptor</i>
<i>The Odyssey</i>、<i>Titanic</i>
<i>deprecated</i>、<i>experimental</i>
如果拿不准,优先用 em;如果明确属于上述五类之一,就用 i。
是,但前提是字体支持真实 italic 变体。很多 Web 字体(尤其中文)只提供 normal 和 oblique(合成倾斜),小字号下字形模糊、笔画失真。
安全写法示例:
code, kbd, i, em { font-family: "Inter", "SF Pro Text", system-ui; font-style: italic;}
关键点:
font-style: italic 优先于 oblique,后者易触发合成i 和 em 的语义纠结真正容易被忽略的是:语义错误在开发阶段几乎零成本,但上线后被无障碍审计标红、SEO 权重下降、读屏用户理解偏差——这些修复成本远高于写对一个标签。