移动端中文着重号必须使用-webkit-text-emphasis且position设为under,因iOS Safari仅识别前缀版;text-emphasis不是HTML属性,需CSS声明;缩写写法、顺序(前缀版在前、dot在颜色前)、under定位缺一不可;兼容性差时应fallback伪元素方案。

移动端中文着重号不能只写 text-emphasis,必须配 -webkit-text-emphasis 且位置设为 under,否则 iOS Safari 基本不显示。
为什么直接写 text-emphasis="dot red" 在 HTML 标签里无效
浏览器根本不识别这个 attribute —— 它不是 HTML 属性,和 color 一样,只接受 CSS 作用域内的声明。写成 <p text-emphasis="dot red">文字</p> 后,开发者工具里查 computed styles 会发现 text-emphasis 根本没进样式表,静默丢弃,零报错。
必须走以下任一路径:
- 内联 style:
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; }
-webkit-text-emphasis 必须写在 text-emphasis 前面
Safari(尤其是 iOS)只认 -webkit- 版本,旧版对拆写支持极差。如果写成:
立即学习“前端免费学习笔记(深入)”;
text-emphasis-style: dot;<br>text-emphasis-color: #e74c3c;
很可能只生效一个、或全失效。更糟的是,若顺序反了——比如标准版写在前、前缀版写在后——WebKit 引擎可能用标准版覆盖前缀版,导致 iOS 上回归空白。
安全写法只有两种:
- 缩写成对,前缀版在前:
-webkit-text-emphasis: dot #e74c3c;+text-emphasis: dot #e74c3c; - 值顺序固定:
dot必须在颜色前,red dot会被解析失败
中文必须用 text-emphasis-position: under
默认 over 是为拉丁字母设计的:它按英文字母基线定位,而汉字字身高、降部短、视觉重心上移,结果就是圆点悬在字顶上,常被截断或与上一行重叠。
under 是中文可用的底线,但必须成对声明:
-webkit-text-emphasis-position: under;text-emphasis-position: under;
不要依赖 line-height 微调来挽救 over —— 实测多数中文字体(如“Microsoft YaHei”、“PingFang SC”)在 over 下仍不稳定。
遇到渲染异常时优先 fallback 到伪元素方案
某些中文字体(如“微软雅黑”)对 text-emphasis 渲染支持差;iOS 16 之前版本偶发偏移;部分安卓 WebView 表现不一致。这时伪元素更可控:
.zh-em { position: relative; display: inline-block; }<br>.zh-em::before { content: "·"; position: absolute; left: 0.1em; top: 0.25em; font-size: 0.85em; color: #e74c3c; }
优势是完全可控定位、缩放、颜色;代价是需手动加 class,且屏幕阅读器通常忽略伪元素内容。
真正麻烦的不是写法本身,而是不同机型上同一段 CSS 可能一个显示、一个悬空、一个干脆不渲染 —— 所以只要涉及关键提示(比如支付确认页的金额、风险条款),建议直接上伪元素,别赌 text-emphasis 的兼容性深度。


















