direction控制文本逻辑阅读顺序(如rtl语言),不改变块级流;writing-mode切换文本物理排布方向(如竖排),影响盒模型主轴及text-align等行为。

direction 和 writing-mode 解决的是两类不同但常被混淆的问题:前者只影响文本的**逻辑阅读顺序和双向算法行为**,不改变块级流方向;后者则真正**切换文本流的物理排布方向**(比如让文字从上到下、从右到左堆叠)。选错属性会导致布局“看起来没反应”或“文字跑偏了”。
什么时候该用 direction: rtl?
仅当你要支持阿拉伯语、希伯来语等天然 RTL 语言,且内容本身是水平排列时使用。它不会把段落转成竖排,也不会让英文单词倒过来写,只是告诉浏览器:“这段文本的默认起始边是右边,标点、数字、嵌入的 LTR 片段要按 Unicode 双向算法重新排序”。
- 常见错误:给中文页面加
direction: rtl想实现“右对齐”,结果发现冒号、括号位置反了,英文人名顺序乱了 - 正确场景:一个包含阿拉伯语段落的多语言新闻页,
div.lang-ar { direction: rtl; unicode-bidi: embed; } - 注意:
direction必须配合unicode-bidi才能可靠控制嵌入文本(如段中夹一段英文),单独设direction对纯中文/英文无效
什么时候必须用 writing-mode?
当你需要真正的竖排(如古籍、书脊标题、日文漫画对话框)或横排但从下往上(vertical-lr)时,writing-mode 是唯一选择。它改变的是盒模型的主轴方向,后续的 text-orientation、text-align 都基于这个新主轴计算。
- 典型值:
writing-mode: vertical-rl(中文竖排主流)、vertical-lr(蒙古文)、sideways-rl(整行旋转90°,用于极窄侧栏) - 关键陷阱:设了
writing-mode后,text-align: right的“右”指的是垂直方向的“下”,不是原来水平方向的右——容易误判对齐效果 - 必须配
text-orientation:否则拉丁字母会躺平(mixed默认行为),中文却直立;想让所有字符都直立就用upright,想全躺平用sideways
direction 和 writing-mode 能一起用吗?
能,但要清楚各自作用域。例如:div { writing-mode: vertical-rl; direction: rtl; } 中,writing-mode 决定文字从上到下、从右到左堆(即第一列在最右),而 direction: rtl 会影响该列内每一行的**行内双向排序**——比如一行里有“测试 (Test)”,括号和英文部分仍会按 RTL 规则往左挤,而非保持原顺序。
- 更常见组合:
writing-mode: vertical-rl; direction: ltr;(保证中文段内英文按正常顺序显示) - 别滥用
direction做对齐:想让竖排文字靠底部?用text-align: bottom或align-content,不是改direction - 浏览器兼容性提醒:
writing-mode在 IE11+ 和现代浏览器都稳定,但text-orientation: sideways在 Safari 16.4 之前不支持
真正难的不是写对属性,而是判断当前需求到底属于“语言阅读习惯调整”还是“物理排版重构”——前者动 direction,后者必须动 writing-mode。混用时,先定主轴(writing-mode),再调细节(direction + text-orientation),否则调试时连该查哪个属性都容易搞错。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











