一行 CSS 就能搞定!用 writing-mode 轻松实现文字竖排

背景

在项目开发过程中,会遇到文字竖排(从上到下)的布局形式。通常我们常用的实现方式是:

  1. 将每个字符单独使用标签包裹,再通过 ​Flexbox排列​
  2. 设置 ​固定宽度,强制换行​

在CSS中为我们提供了更优雅、更强大、更语义化的解决方案 ------ ​writing-mode属性​ ​,让文字竖排变得 ​​简单、灵活​​。

1. 常规实现方式

我们通常采用以下方式模拟或实现竖排文字效果:

1.1 ​​字符拆解 + Flexbox布局​

将每个文字单独放入一个标签(如 <span>),然后使用 Flexbox 垂直排列:

xml 复制代码
<div class="manual-vertical">
  <span>查</span>
  <span>看</span>
  <span>更</span>
  <span>多</span>
</div>
css 复制代码
.manual-vertical {
  display: flex;
  flex-direction: column;
  align-items: center;
}

1.2 ​​固定宽度+强制换行​

使用固定宽度,强制换行的方式实现:

css 复制代码
<div class="width">
    查看更多
</div>

.width {
    width: 50px;
    font-size: 50px;
    word-wrap: break-word;
}

展示样式:

2. writing-mode 方式(一行代码)

2.1 什么是 writing-mode?

writing-mode属性定义了文本水平或垂直排布以及在块级元素中文本的行进方向。 包括:

  • 横排(从左到右 或 从右到左)
  • 竖排(从上到下,从右到左 或 从左到右)
  • 甚至横躺(sideways)

2.2 最常用的竖排属性值:

属性值 效果描述 适用场景
vertical-rl 竖排,从右向左(​​中文传统排版习惯​ ​) 对于左对齐(ltr)文本,内容从上到下垂直流动,下一垂直行位于上一行左侧。对于右对齐(rtl)文本,内容从下到上垂直流动,下一垂直行位于上一行右侧。 中文诗词、菜单、标题、古籍风格
vertical-lr 竖排,从左向右。对于左对齐(ltr)文本,内容从上到下垂直流动,下一垂直行位于上一行右侧。对于右对齐(rtl)文本,内容从下到上垂直流动,下一垂直行位于上一行左侧。 日文、部分特殊排版
horizontal-tb 横排,从上到下(默认值)对于左对齐(ltr)文本,内容从左到右水平流动。对于右对齐(rtl)文本,内容从右到左水平流动。下一水平行位于上一行下方。 常规英文、中文网页
sideways-rl/ sideways-lr 文字横躺(从右到左 / 从左到右) 特殊效果,但兼容性有限

2.3 如何使用?

只需要一行 CSS:

css 复制代码
.vertical-text {
  writing-mode: vertical-lr;  /* 竖排,从左向右 */
  /* 可选:调整行高、字体、间距等 */
  line-height: 1.8;
  letter-spacing: 2px;
  text-align: center;
}

代码如下:

css 复制代码
<div class="vertical-demo">
  查看更多
</div>

.vertical-demo {
  writing-mode: vertical-rl;
  font-size: 24px;
  line-height: 2;
  height: auto;
}

3. 总结

最后总结一下:如果你正在实现文字竖排效果,​writing-mode就是你最好的选择​ ​。 它不仅让竖排文字变得 ​​像一句 CSS 那么简单​ ​。只需给你的元素加上 writing-mode: vertical-lr;,就能轻松拥有竖排文字效果。

如有错误,请指正O^O!

相关推荐
anOnion4 小时前
构建无障碍组件之Menu Button pattern
前端·html·交互设计
用户47949283569155 小时前
claude Fable用不了?把Gpt 5.5pro接到你的claude code里
前端·后端
zhangxingchao7 小时前
Kotlin常用的Flow 操作符整理
前端
IT_陈寒9 小时前
React的useState居然还有这种坑?我差点删库跑路
前端·人工智能·后端
Pedantic10 小时前
SwiftUI 手势笔记
前端·后端
橙子家10 小时前
浏览器缓存之【结构化数据库与缓存】: IndexedDB、Cache storage 和 Storage buckets
前端
user205855615181310 小时前
X6 中边悬浮置顶,规避 `mouseleave` 事件丢失问题
前端
李明卫杭州10 小时前
CSS aspect-ratio 属性完全指南
前端
Pedantic12 小时前
SwiftUI 手势层级(Gesture Hierarchy)详解
前端