text-emphasis 是纯 CSS 属性,不可作为 HTML 属性使用;必须用 style 或 CSS 规则声明,中文需同时写 -webkit-text-emphasis 和 text-emphasis 且前缀版在前,position 推荐设为 under 并测试系统字体兼容性。

text-emphasis 不能写在 HTML 标签里,必须走 CSS 声明
直接在 <p text-emphasis="dot red"> 这类写法完全无效——浏览器会静默忽略,不报错也不渲染。它和 color、font-size 一样,是纯 CSS 属性,只接受样式表或 style 属性声明。
常见错误现象:加了但没显示,检查元素 computed styles 会发现 text-emphasis 根本没生效;根源就是误当 HTML attribute 用了。
- 必须用
style="text-emphasis: dot red; -webkit-text-emphasis: dot red;"或外部/内部 CSS 规则 - 任意元素都可加,不需要包裹
<span>或语义标签 - 行内元素(如
<span>、<em>)和块级元素(如<p>、<div>)均支持
中文必须配 -webkit-text-emphasis 且顺序不能错
Safari(尤其是 iOS)至今不认无前缀的 text-emphasis,只识别 -webkit-text-emphasis。漏掉它,iPhone 上大概率空白。
关键细节:
立即学习“前端免费学习笔记(深入)”;
- 必须成对写:
-webkit-text-emphasis: dot red;+text-emphasis: dot red; - 前缀版必须写在标准版前面,否则旧 Safari 可能覆盖失效
- 不要拆成
text-emphasis-style: dot;和text-emphasis-color: red;——部分 iOS 版本对分写支持极差 - 值顺序敏感:
dot red有效,red dot无效
text-emphasis-position: under 是中文可用的底线
默认 text-emphasis-position: over(上方)对汉字基本不可用:点悬在字顶上,位置偏高、易重叠、甚至被截断。这不是 bug,是中文字形基线与西文差异导致的排版失配。
实操建议:
- 中文场景优先设为
under:-webkit-text-emphasis-position: under;+text-emphasis-position: under; - 若坚持用
over,需同步调line-height(如1.2)并微调text-emphasis-position的垂直偏移(但兼容性风险高,不推荐) - 字体影响显著:系统中文字体(如 “PingFang SC”、“Microsoft YaHei”)对
under支持较稳;自定义 Web Font 需确认是否包含着重号 glyph
自定义符号和颜色要避开常见陷阱
text-emphasis-style 支持字符字面量(如 '•'、'★'),但实际使用中容易翻车:
- 用 Unicode 字符时,务必用单引号包裹:
text-emphasis: '•' #f00;,不加引号会被解析为关键字 - 避免用全角标点(如
'。'、'、')——多数字体无对应 glyph,显示为空白或方框 - 颜色支持所有 CSS 颜色值:
red、#f00、rgb(255,0,0)、rgba(255,0,0,.5)均可 - 强调号大小不可直接控制,它随字体大小缩放;若需固定尺寸,得用伪元素方案替代
最易被忽略的一点:text-emphasis 不继承父级 line-height 计算逻辑,它的定位基准依赖字体自身的 ascent/descent 度量。同一段 CSS,在不同中文字体下,under 的实际距离可能差 2–3px —— 所以测试一定要覆盖目标用户真实使用的系统字体。



















