应根据语义而非样式选择:用于语气强调,影响读屏语调和seo;仅表文本类型不同,如外文词、学名,无强调含义。误用会损害可访问性与语义准确性。

<em></em> 和 <i></i> 不是“保存为”的产物,而是你手写或程序生成 HTML 时主动选用的语义化标签。不存在“把已有斜体源码转成 <em></em> 或 <i></i>”的自动保存功能——浏览器渲染出的斜体样式,背后可能是 CSS、<i></i>、<em></em>,甚至 <span style="font-style: italic"></span>,但源码本身不会“反向识别并替换”。
怎么决定用 <em></em> 还是 <i></i>
关键不是“看起来斜不斜”,而是“这段文字在语境中有没有强调语气或重要性”:
-
<em></em>:用于需要被读屏软件加重语调、搜索引擎标记重点的场景,比如「你必须备份」中的“必须”,或反语「这真是太棒了」 -
<i></i>:仅用于惯例上用斜体但无强调含义的内容,例如:<i>git add</i>(命令名)、<i>Homo sapiens</i>(学名)、<i>et al.</i>(拉丁短语) - 误用
<i></i>替代<em></em>(比如按钮文字写成<i>提交</i>),会导致读屏软件完全忽略其操作意图
font-style: italic 为什么有时没效果
写了 CSS 却没变斜?常见原因不是语法错,而是字体本身不支持真实斜体:
- 中文字体(如「微软雅黑」「思源黑体」)大多没有独立的
italic字重,浏览器只能 fallback 到oblique(机械倾斜),效果生硬甚至模糊 - 父元素设了
font-style: normal,子元素没显式覆盖,继承导致失效 - CSS 里写了
i, em { font-style: normal !important; },直接干掉了所有斜体 - 用
@font-face引入自定义字体时,没为font-style: italic单独声明对应字体文件,或src路径指向了普通字重文件
中文要真斜体,不能只靠标签或 CSS 声明
想让中文也呈现印刷级斜体(非机械倾斜),必须引入带真实 italic 变体的中文字体文件:
- 目前开源中文字体中,
Noto Sans SC、FiraGO等少数支持完整字重+斜体;商业字体如 Adobe 思源系列部分版本也提供 - 仅写
font-style: italic+ 普通中文字体,浏览器只能做oblique,这不是 bug,是字体缺失 - 如果项目对中文斜体要求高,建议用 SVG 图形替代关键短语,或改用语义更稳妥的
<em></em>+ 配套 CSS 强调样式(如下划线、颜色变化)来传递重点
真正容易被忽略的点:斜体从来不是无障碍友好的独立信号。哪怕用了 <em></em>,如果上下文缺乏足够线索(比如没配合动词、没明确主谓宾),读屏用户依然可能误解强调对象。视觉上的“斜”,永远要和结构、语义、上下文一起设计。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











