text-emphasis必须用css声明,不能写在html标签中;中文场景需同时写-webkit-text-emphasis和text-emphasis且顺序不能错,并设position为under,否则移动端不显示。

text-emphasis 不是 HTML 属性,不能写在标签里;它必须用 CSS 声明,否则浏览器会静默忽略——你加了但没显示,大概率就是栽在这儿。
为什么 text-emphasis 写在 HTML 标签里完全无效
像 <p text-emphasis="dot red">文本</p> 这种写法,浏览器既不报错也不渲染。它和 color、font-size 一样,只接受 CSS 规则或 style 属性声明。
- 检查元素的 computed styles,如果
text-emphasis根本没出现,说明它压根没被解析 - 常见误操作:把 CSS 属性当 HTML attribute 用,尤其从 Word 或设计稿直接迁移时容易犯
- 唯一合法写法只有两种:
style="text-emphasis: dot red; -webkit-text-emphasis: dot red;",或外部/内部 CSS 规则
中文场景下必须同时写 -webkit-text-emphasis 且顺序不能错
iOS Safari(包括所有 iPhone/iPad)至今不认标准版 text-emphasis,只识别带 -webkit- 前缀的版本。漏掉或顺序颠倒,中文着重号在移动端大概率空白。
- 必须成对出现:
-webkit-text-emphasis: dot red;在前,text-emphasis: dot red;在后 - 不能拆成
text-emphasis-style: dot;+text-emphasis-color: red;—— 部分 iOS 版本对分写支持极差 - 值顺序敏感:
dot red有效,red dot会被当成无效值丢弃 - 自定义字符必须加单引号:
text-emphasis: '•' #f00;,不加引号会被解析为关键字
text-emphasis-position: under 是中文可用的底线
默认 text-emphasis-position: over 对汉字基本不可用:点悬在字顶上,位置偏高、易重叠、甚至被截断。这不是 bug,是中文字形基线与西文差异导致的排版失配。
- 中文务必显式设为
under:-webkit-text-emphasis-position: under;+text-emphasis-position: under; -
right和left在横排中文中基本无效,只在writing-mode: vertical-rl下才起作用 - 字体影响显著:系统中文字体(如 “PingFang SC”、“Microsoft YaHei”)对
under支持较稳;Web Font 若未嵌入着重号 glyph,可能显示为空白或方框
自定义符号和颜色的几个硬坑
用 Unicode 字符做 text-emphasis-style 看似灵活,实则翻车率高。
- 避免全角标点(如
'。'、'、')—— 多数字体无对应 glyph,显示为空白或方框 - 复杂符号(如
'*'、'#')在小字号下缩成一团,用户根本看不出是什么 - 强调符大小固定为文字字号的一半,无法通过 CSS 调整;若文字动态缩放,需确保所选符号在最小字号下仍可辨识
- 颜色支持所有 CSS 值:
red、#f00、rgb(255,0,0)、rgba(255,0,0,.5)均可,但透明度太低(如.1)可能导致视觉不可见
under、字体要支持 glyph、写法要严格按顺序——少一个环节,就只剩空白。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











