如何利用CSS中的writing-mode属性实现古诗词的垂直排版?

陌婷大大_9512

陌婷大大_9512

2026-06-26

923人浏览

原创

vertical-rl 是古诗词垂直排版唯一正确方案,因其原生支持“从上到下、从右到左”传统阅读顺序,配合 text-orientation: mixed 保证中英文混排可读性,并需显式设置 direction: rtl 以确保列序与布局逻辑正确。

如何利用css中的writing-mode属性实现古诗词的垂直排版?

writing-mode: vertical-rl 是实现古诗词垂直排版最直接、最语义正确的方式,无需 transform 旋转或 JS 拼接,浏览器原生支持文本流方向切换。

为什么必须用 vertical-rl 而不是 vertical-lr

古诗词竖排遵循“从上到下、从右到左”的阅读顺序,这正是 vertical-rl 的行为:第一列在最右侧,后续列依次向左排列。若误用 vertical-lr,第一列会出现在最左侧,视觉上像镜像翻转,完全违背传统排版逻辑。

  • vertical-rl:适合中文、日文古籍,对应实际印刷与竹简逻辑
  • vertical-lr:仅用于蒙古文等极少数语言,日常项目中基本不用
  • 绝对不要用 horizontal-tb + transform: rotate(90deg) 模拟——会破坏语义、影响可访问性、导致文字无法被屏幕阅读器正确识别

text-orientation: mixed 是让英文和数字可读的关键

只设 writing-mode: vertical-rl,汉字会直立,但英文字母、阿拉伯数字、标点(如逗号、句号)默认顺时针旋转 90°,变成横向躺倒状态,阅读困难甚至无法识别。

CSS婚礼策划服务机构宣传网站模板
CSS婚礼策划服务机构宣传网站模板

CSS婚礼策划服务机构宣传网站模板是一款适合提供婚礼策划和婚庆服务机构宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。

下载
  • text-orientation: mixed:汉字/假名直立,拉丁字母和数字自动旋转 90° 后仍保持可读方向(即“字头朝右”),这是古籍混排中最自然的方案
  • text-orientation: upright:所有字符强制直立,适合纯书法题跋或印章式标题,但英文会变成“横着站”,需确认设计是否接受
  • 省略该属性 = 放任英文段落不可读,尤其在作者名、朝代、注释中含英文时极易踩坑

对齐、方向与容器尺寸必须同步调整

竖排后,text-align 和 direction 的含义已改变:text-align: left 实际是对齐容器顶部(首行顶对齐),text-align: right 反而贴底;而 direction: rtl 才真正控制列序(从右向左)。

  • 务必显式声明 direction: rtl,否则嵌套的 span、图标或按钮可能错位
  • height 在竖排中实际是“每列最大高度”,需根据行数预估(例如 20 行 × 1.5em line-height ≈ 30em),不能依赖 min-height 自适应
  • white-space: nowrap 常需配合使用,防止诗句内因空格或短词意外换行,破坏单列完整性
  • 溢出方向变了:overflow-y 控制垂直滚动(即上下滑动),overflow-x 控制水平滚动(即左右滑动列),别反了

兼容性与真实项目中的 fallback 策略

现代浏览器(Chrome 48+、Firefox 41+、Safari 12.1+、Edge 79+)已稳定支持 writing-mode 和 text-orientation,但 iOS Safari 旧版本(如 iOS 12)偶有渲染抖动,IE 则完全不支持。

  • 不要用 @supports 降级为 transform 方案——它无法解决语义缺失、选中文本错乱、复制粘贴顺序颠倒等问题
  • 若必须兼容 IE,应放弃纯 CSS 方案,改用服务端生成 SVG 或 Canvas 渲染,或直接提供横排备用视图
  • 避免在 table 单元格或 flex 直接子元素上应用 writing-mode:某些浏览器会破坏布局流,优先包裹一层 <div class="poem-column"> <li>响应式场景下,小屏建议用 <code>@media (max-width: 480px) 切回 writing-mode: horizontal-tb,否则竖排会撑宽页面导致横向滚动
  • 古诗词竖排看似只是换了个方向,实则牵一发而动全身:字符朝向、对齐逻辑、溢出行为、容器尺寸定义、甚至屏幕阅读器解析路径都随之改变。最容易被忽略的是 direction: rtl 的必要性——它不光影响文字,更决定整个布局子树的方向继承关系。

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

css

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
css
css

css是层叠样式表,用来表现HTML或XML等文件样式的计算机语言,不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.15

4896

6

css居中
css居中

css居中:1、通过“margin: 0 auto; text-align: center”实现水平居中;2、通过“display:flex”实现水平居中;3、通过“display:table-cell”和“margin-left”实现居中。本专题为大家提供css居中的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.27

1057

5

css如何插入图片
css如何插入图片

cssCSS是层叠样式表(Cascading Style Sheets)的缩写。它是一种用于描述网页或应用程序外观和样式的标记语言。CSS可以控制网页的字体、颜色、布局、大小、背景、边框等方面,使得网页的外观更加美观和易于阅读。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.28

1938

6

css超出显示...
css超出显示...

在CSS中,当文本内容超出容器的宽度或高度时,可以使用省略号来表示被隐藏的文本内容。本专题为大家提供css超出显示...的相关文章,相关教程,供大家免费体验。

2023.08.01

3766

7

css字体颜色
css字体颜色

CSS中,字体颜色可以通过属性color来设置,用于控制文本的前景色,字体颜色在网页设计中起到很重要的作用,具有以下表现作用:1、提升可读性;2、强调重点信息;3、营造氛围和美感;4、用于呈现品牌标识或与品牌形象相符的风格。

2023.08.10

7705

11

什么是css
什么是css

CSS是层叠样式表(Cascading Style Sheets)的缩写,是一种用于描述网页(或其他基于 XML 的文档)样式与布局的标记语言,CSS的作用和意义如下:1、分离样式和内容;2、页面加载速度优化;3、实现响应式设计;4、确保整个网站的风格和样式保持统一。

2023.08.10

6531

7

css三角形怎么写
css三角形怎么写

CSS可以通过多种方式实现三角形形状,本专题为大家提供css三角形怎么写的相关教程,大家可以免费体验。

2023.08.21

2177

9

css设置文字颜色
css设置文字颜色

CSS(层叠样式表)可以用于设置文字颜色,这样做有以下好处和优势:1、增加网页的可视化效果;2、突出显示某些重要的信息或关键字;3、增强品牌识别度;4、提高网页的可访问性;5、引起不同的情感共鸣。

2023.08.22

3131

5

css禁止点击事件
css禁止点击事件

实现css禁止点击事件的方法有使用CSS的pointer-events属性和使用JavaScript禁用点击事件。本专题为大家提供点击事件相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.23

2733

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 1.5万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 6万人学习

CSS教程
CSS教程

共754课时 | 98.2万人学习