CSS 书写模式与国际化
书写模式(Writing Mode)决定了文本的流向和块方向。针对中文、日文等竖排需求,以及从右到左的语言(如阿拉伯语、希伯来语),掌握书写模式和相关属性是实现国际化排版的关键。
为什么需要这个特性
- 国际化排版:支持竖排(top-to-bottom)和 RTL(right-to-left)语言
- 文化适配:符合不同语言的阅读习惯(如杂志式竖排)
- 布局灵活:改变行进方向,影响流动、滚动与对齐
- 组件兼容:在国际化场景下保持组件布局正确
- 无障碍与可访问性:更符合母语阅读体验
核心概念解释
writing-mode
控制文本流向(行的方向)和块方向。
writing-mode: horizontal-tb; /* 水平,从左到右,从上到下(默认) */
writing-mode: vertical-rl; /* 竖排,从上到下,每列从右到左 */
writing-mode: vertical-lr; /* 竖排,从上到下,每列从左到右 */
writing-mode: sideways-rl; /* 文本方向横向旋转,行从右到左 */
writing-mode: sideways-lr; /* 文本方向横向旋转,行从左到右 */
direction
控制行内内容的书写方向(主要针对 RTL)。
direction: ltr; /* 从左到右(默认) */
direction: rtl; /* 从右到左(阿拉伯语、希伯来语) */
text-orientation
控制竖排模式下字符的方向(仅竖排生效)。
text-orientation: mixed; /* 默认,西文横置,东亚文字直立 */
text-orientation: upright; /* 所有字符直立 */
text-orientation: sideways; /* 所有字符横置 */
常见用法
1. 竖排中文
.vertical-cn {
writing-mode: vertical-rl; /* 竖排,从右到左 */
text-orientation: mixed; /* 汉字直立,西文横置 */
line-height: 1.6;
}
2. RTL 页面
html[dir=\"rtl\"] {
direction: rtl;
}
3. 竖排标题
.vertical-title {
writing-mode: vertical-rl;
text-orientation: upright;
letter-spacing: 0.1em;
}
示例
示例 1:竖排卡片
.card-vertical {
writing-mode: vertical-rl;
text-orientation: mixed;
width: 200px;
border: 1px solid #ddd;
padding: 12px;
}
示例 2:RTL 表单
form[dir=\"rtl\"] {
direction: rtl;
text-align: right;
}
form[dir=\"rtl\"] label {
display: block;
margin-bottom: 8px;
}
注意事项
- 对齐与流动:改变书写模式会影响
text-align、滚动方向和块方向,注意联动。 - 混合内容:竖排时
text-orientation很重要,确保西文和数字显示正常。 - 组件适配:RTL 场景下需要检查导航、箭头、图标方向。
- 表单与输入:输入框在 RTL/竖排下的光标与对齐需测试。
- 浏览器兼容:现代浏览器支持良好,旧版需测试;
sideways-*支持度略差。 - 打印与导出:竖排可能影响打印版式,注意测试。
- 可访问性:尊重用户语言/方向设置,避免强制覆盖全局方向。
掌握书写模式与方向属性,你就能为不同语言和文化提供正确的阅读体验,并在竖排、RTL 场景下保持布局与交互的正确性。