text-combine-upright在现代浏览器中基本可用,但旧版Safari(11–15)和Android 4.4–6.x WebView会忽略或部分渲染;Chrome 58+、Firefox 48+、Edge 79+支持但存在差异,如Safari对汉字无效、仅压缩数字/拉丁字母,iOS 14前digits 2可能失败;应使用@supports检测并配合font-size缩放或transform旋转降级。

text-combine-upright 在现代浏览器中基本可用,但旧版 Safari 和部分 Android WebView 仍会忽略或部分渲染,不能当作“开箱即用”的功能来依赖。
哪些浏览器会出问题?
Chrome 58+、Firefox 48+、Edge 79+ 都支持 text-combine-upright,但存在明显差异:
- Safari 11–15:支持
all和digits <integer>,但对中文汉字组合常不生效(只对数字/拉丁字母起作用) - Android 4.4–6.x 的 WebView:完全不识别该属性,
text-combine-upright: all被静默丢弃 - iOS 14 之前的 Safari:
digits 2可能压缩失败,显示为默认竖排而非单行
怎么检测并降级?
别靠 UA 判断,用 @supports 最可靠:
/* 基础竖排样式(所有浏览器都走这里) */
.vertical-num {
writing-mode: vertical-rl;
text-orientation: upright;
}
<p>/<em> 仅支持的浏览器才加压缩 </em>/
@supports (text-combine-upright: all) {
.vertical-num {
text-combine-upright: all;
}
}注意:@supports 检测的是语法支持,不是渲染效果。即使检测通过,Safari 也可能只压缩前两个字符——所以别指望它在所有设备上行为一致。
立即学习“前端免费学习笔记(深入)”;
遇到压缩失败时,有什么替代方案?
当 text-combine-upright 不生效或效果异常,优先考虑轻量级 fallback:
- 对纯数字(如页码、价格),用
font-size缩小 +line-height: 1强制单行,视觉上接近压缩效果 - 对短英文缩写(如 “CPU”、“PDF”),包裹
<span>并设transform: rotate(-90deg),再配合display: inline-block控制尺寸 - 避免对汉字使用
text-combine-upright: all—— 它本就不设计用于汉字,强行用只会触发浏览器回退到普通竖排
真正麻烦的不是兼容性开关,而是不同浏览器对“可压缩字符数”的隐式限制:Chrome 可能压 4 位数字,Safari 却只压前 2 位,且不报错、不提示。上线前必须在真机上逐个验证目标机型。


















