writing-mode: vertical-rl 单独使用必然出错,必须搭配 text-orientation: mixed、显式 height 和逻辑对齐属性;否则中文竖排但英文躺倒、容器塌陷、text-align:right 变顶部对齐。

writing-mode: vertical-rl 单独使用几乎必然出错,必须搭配 text-orientation、显式 height 和逻辑方向属性,否则中文能竖、英文躺倒、容器塌陷、对齐反直觉。
为什么只写 writing-mode: vertical-rl 文字会“歪”
因为 writing-mode 只改文本流方向(把“行”变成垂直列),不控制单个字符的朝向。默认情况下,拉丁字母、数字、半角标点仍按水平方式绘制,结果就是顺时针旋转 90°,侧躺在那里。
-
text-orientation: mixed:汉字直立,英文字母/数字/标点保持水平(推荐,最接近出版物效果) -
text-orientation: upright:所有字符强制直立(适合纯视觉场景,但英文可读性差) - 别用
text-orientation: sideways——它会让汉字也躺倒,完全违背中文竖排本意
容器高度塌成一条线?那是没设 height
writing-mode: vertical-rl 会让块级容器的「内联方向」变为垂直,此时 height: auto 失效,文字被压缩到极小高度,视觉上像挤在一起的一横条。
- 必须手动指定
height(例如height: 400px)或max-height+overflow-y: auto - 避免用
min-height或fit-content,它们在竖排下行为不可靠 - 若需滚动,加上
-webkit-overflow-scrolling: touch保移动端流畅
flex 布局里加 writing-mode 就乱套?别在父容器上用
把 writing-mode 直接加在 display: flex 或 display: grid 的父元素上,会和 flex-direction / grid-template 冲突——主轴定义被重载,子项排列失序。
- 只在需要竖排的**文本容器本身**(如 )上设置
writing-mode- 若要做竖排导航栏,优先用
flex-direction: column+transform: rotate(90deg),更可控(注意屏幕阅读器兼容性)- 真要用 flex 配合竖排内容,记得用逻辑属性:
justify-content: start对应“顶部对齐”,align-items: end对应“右对齐”text-align: right怎么变成“顶对齐”了?方向语义全翻转了一旦启用
writing-mode: vertical-rl,物理方向(left/right/top/bottom)就不再对应原本含义:-
text-align: right→ 实际是「块起始端对齐」,即顶部对齐 -
text-align: left→ 实际是「块结束端对齐」,即底部对齐 - 改用逻辑值更安全:
text-align: start/end,或margin-block-start替代margin-top -
direction在竖排中影响的是「列序」(比如多列文本从右列开始还是左列开始),不是字序;中文单列场景通常可省略
真正难的不是写出那行
writing-mode,而是意识到它会连锁改写整个盒模型的方向语义——高度变宽度、top变block-start、right变start。漏掉任一配套,页面就立刻“看起来像没调好”。 - 若要做竖排导航栏,优先用
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











