text-emphasis必须用css声明,不能写在html标签中;仅支持内联style或css规则,且ios safari只识别-webkit前缀并要求顺序正确。

text-emphasis不能写在HTML标签里,必须用CSS声明
直接在标签上加 text-emphasis="dot red" 完全无效——浏览器既不报错也不渲染,computed styles 里压根找不到这个属性。它和 color 一样,只存在于 CSS 作用域中。
合法路径只有两个:
- 内联样式:
style="-webkit-text-emphasis: dot #e74c3c; text-emphasis: dot #e74c3c; -webkit-text-emphasis-position: under; text-emphasis-position: under;" - CSS 规则:
.emph { -webkit-text-emphasis: dot #e74c3c; text-emphasis: dot #e74c3c; -webkit-text-emphasis-position: under; text-emphasis-position: under; }
iOS Safari只认-webkit-text-emphasis,且顺序不能错
Chrome 和 Firefox 已支持无前缀 text-emphasis,但 iOS Safari(包括所有 iPhone/iPad)至今只识别 -webkit-text-emphasis。漏掉前缀,中文着重号基本空白。
关键细节:
-
-webkit-text-emphasis必须写在text-emphasis前面,否则可能被覆盖 - 值顺序固定:
dot #e74c3c有效,#e74c3c dot会被当成无效值丢弃 - 不能拆成
text-emphasis-style: dot;+text-emphasis-color: #e74c3c;——旧版 Safari 对分写支持极差
中文必须设 text-emphasis-position: under
默认 text-emphasis-position: over 是为拉丁字母设计的:点落在英文字母基线上方,但汉字字身高、视觉重心上移,结果就是圆点悬在字顶、常被截断或与上一行重叠。
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,显示为空白或方框 - 复杂符号(如
'*'、'#')在小字号下缩成一团,用户根本看不出是什么 - 自定义字符必须加单引号:
text-emphasis: '•' #f00;,不加引号会被解析为关键字 - 强调符大小固定为文字字号的一半,无法通过 CSS 调整;若文字动态缩放,需同步 JS 控制 class 切换
真正容易被忽略的是字体支持——哪怕所有 CSS 都写对了,只要当前字体没内置着重号 glyph,iOS 上依然显示为空白。别急着查语法,先检查 computed styles 里 text-emphasis 是否生效,再确认字体是否兜底。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











