应优先使用em而非i来表达语气强调,因em被读屏软件识别为语义强调并改变语音特征,而i仅表示特定文本类型且无语气作用;纯视觉斜体需求应使用css而非html标签。

em和i在读屏软件中行为完全不同
用 i 包裹“必须”或“立即”,屏幕阅读器会平读,不加停顿、不抬音调;而 em 会让 NVDA、VoiceOver 等工具主动改变语速或重音——这不是渲染差异,是语义层的硬性约定。
常见错误现象:<i>请立即保存</i> 被朗读成普通陈述句,用户可能忽略操作紧迫性;正确写法是 <em>请立即保存</em>,辅助技术会拖长“立即”二字。
- 检查方法:用 VoiceOver(macOS)或 NVDA(Windows)朗读页面,听语气变化
-
i在可访问性检测工具(如 axe)中常被归类为“装饰性内容”,其包裹的文字不参与 color-contrast 校验 - 搜索引擎解析 DOM 时,
em内容会被纳入关键词权重计算,i基本不计入
什么时候该用em而不是i
只有一种判断标准:去掉斜体后,句子的语气、重点或逻辑是否被削弱?如果是,就必须用 em。
典型场景包括:
- 反讽或意外转折:
<em>真</em>是太棒了(“真”需重读才传达反语) - 对比强调:
不是<em>快</em>,而是<em>准</em> - 操作约束:
你<em>不能</em>删库(“不能”是动作边界,非术语) - 情绪张力:
我<em>真的</em>没看到通知(“真的”承载可信度信号)
嵌套 em 有意义:<em>你<em>绝对</em>不能删库</em> 中外层强调整体禁令,内层强化程度副词——主流读屏器会分层处理停顿与重音。
什么时候该用i而不是em
i 不是“斜体快捷键”,它是为特定文本类型打标签的:内容本身就不属于主叙述流,也不需要被重读。
合法用例仅限以下几类:
- 外文词或短语:
<i>c’est la vie</i>、<i>et al.</i> - 生物学名:
<i>Homo sapiens</i> - 船名、飞机名、作品名:
<i>Titanic</i>、<i>Inception</i> - 技术术语首次出现(且无强调意图):
这个函数返回一个 <i>Promise</i> 对象 - 状态标签:
<i>draft</i>、<i>deprecated</i>
禁止用 i 的场景:<i>注意:此操作不可逆</i> —— “注意”是语气指令,应改用 em;<i>API</i> 在中文文档中已是通用词,无需额外语义隔离。
纯视觉需求别碰i或em,直接用CSS
如果只是想让一段文字看起来斜一点,又不带任何语气或类型含义,就别用 i 或 em。它们不是样式开关。
正确做法是:
- 用
span+ CSS:<span class="italic">签名处</span>,配合.italic { font-style: italic; } - 避免在 React/Vue 模板中写
<i>{{ text }}</i>,尤其当text来自用户输入时——i标签不提供 XSS 防护,而语义中性标签更安全 - 团队协作中,
i容易被后续维护者误当成“强调”使用,导致语义污染;统一用 CSS 控制样式,结构层和表现层才真正分离
真正容易被忽略的是:HTML5 规范里 em 和 i 的分工是强制性的,不是建议。它们不共享语义,也不能靠样式“假装”对方——哪怕你用 CSS 把 em 设成正常字体,它仍是语义强调;把 i 加粗加色,它依然没有语气权重。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











