要实现文字竖向排列,最核心的属性是writing-mode,它通过改变文本流向和布局主轴来实现竖排效果,1. 使用writing-mode: vertical-rl可让文字从上到下、行从右到左排列,符合中文竖排阅读习惯;2. writing-mode会系统性改变盒模型的逻辑方向,使width变为逻辑高度,height变为逻辑宽度,块级流从右向左堆叠,内联元素从上到下排列;3. margin和定位属性随之按逻辑方向重新解释,top仍为物理顶部,但“块开始”方向变为right;4. 图片、表单元素在竖排容器中可能出现方向错乱或对齐问题,需单独设置writing-mode或调整布局;5. 滚动条方向受主轴变化影响,超出内容可能触发横向滚动条,需通过overflow-x/y或flexbox调整;6. text-orientation用于控制字符方向,mixed让数字英文横躺,upright使其旋转90度正立显示;7. text-combine-upright可将多个字符(如数字)组合成横向文本块嵌入竖排流中,适用于日期、代号等场景;8. 实际应用中需注意字体支持、第三方组件兼容性及响应式设计的复杂性,结合flexbox或grid等逻辑布局模型可更精准控制竖排效果,最终实现符合视觉预期的竖向文本呈现。

在CSS里,要让文字竖着排列,最核心的属性就是
writing-mode
实现文字竖向排列,主要就是利用CSS的
writing-mode
常用的值有:
立即学习“前端免费学习笔记(深入)”;
vertical-rl
vertical-lr
horizontal-tb
direction
举个例子,如果你想让一个
div
.vertical-text-container {
  writing-mode: vertical-rl;
  /* 调整一下字体大小和行高,让效果更明显 */
  font-size: 18px;
  line-height: 1.8;
  border: 1px solid #ccc;
  padding: 10px;
  width: 50px; /* 注意这里宽度会影响块级元素的“高度”感知 */
  height: 200px;
  overflow: auto;
}<div class="vertical-text-container"> 这是一段测试文字,用来演示CSS的writing-mode属性如何实现文字的竖向排列。它能够改变文本的流向,让内容呈现出不同的视觉效果。 </div>
通过
writing-mode
width
如果你需要进一步控制竖排文字中单个字符的方向,比如数字、英文单词或标点符号,它们在竖排模式下默认可能会是“横躺”的,这时就需要
text-orientation
writing-mode
说实话,
writing-mode
首先,它会彻底改变块级流的方向。在默认的
horizontal-tb
writing-mode: vertical-rl
margin-top
margin-bottom
margin-left
margin-right
其次,内联流的方向也随之改变。原本内联元素(比如
span
a
vertical-rl
还有一点很容易被忽视,那就是相对定位和绝对定位的参考系也会跟着变。
top
right
bottom
left
vertical-rl
top: 0
right: 0
direction
ltr
所以,当你使用
writing-mode
writing-mode
flex-direction: column
vertical-rl
flex-direction: row
horizontal-tb
writing-mode
在实际项目里用
writing-mode
一个比较典型的是图片和图标的对齐问题。当文字竖起来后,图片或图标如果还是按常规的
display: inline-block
vertical-align: middle
writing-mode: horizontal-tb
vertical-align
display: block
flex
表单元素也是个老大难。
input
textarea
button
writing-mode
input
再来就是滚动条的方向。如果你有一个竖排的容器,内容超出了其可视范围,默认情况下,浏览器可能会在物理上出现一个横向滚动条,而不是我们期望的竖向滚动条(因为它的“主轴”是横向的)。这需要通过
overflow-x
overflow-y
transform
height
div
writing-mode: vertical-rl
还有,一些第三方库或组件可能没有充分考虑到
writing-mode
width
height
最后,响应式设计也是一个挑战。在不同屏幕尺寸下,你可能需要动态切换
writing-mode
在竖排文字里,我们经常会遇到一些字符,比如数字、拉丁字母、某些标点符号(如括号、引号),它们默认情况下可能会“躺着”显示,这在视觉上并不总是我们想要的。这时,
text-orientation
text-orientation
mixed
upright
sideways
通常,在
writing-mode: vertical-rl
vertical-lr
mixed
upright
.vertical-text-upright {
  writing-mode: vertical-rl;
  text-orientation: upright; /* 让所有字符都尝试正直显示 */
  font-size: 20px;
  line-height: 1.5;
  border: 1px solid #ccc;
  padding: 10px;
  height: 250px;
  width: 60px;
}
.vertical-text-mixed {
  writing-mode: vertical-rl;
  text-orientation: mixed; /* 默认行为,数字英文会横躺 */
  font-size: 20px;
  line-height: 1.5;
  border: 1px solid #ccc;
  padding: 10px;
  height: 250px;
  width: 60px;
  margin-left: 20px;
}<div class="vertical-text-upright"> 这是一个测试,包含数字123和英文ABC。请看它们是否正直。 </div> <div class="vertical-text-mixed"> 这是一个测试,包含数字123和英文ABC。请看它们是否横躺。 </div>
除了
text-orientation
text-combine-upright
.combine-upright-example {
  writing-mode: vertical-rl;
  text-orientation: upright;
  font-size: 24px;
  line-height: 1.8;
  border: 1px solid #ccc;
  padding: 10px;
  width: 80px;
  height: 300px;
}<div class="combine-upright-example"> 今天是<span style="text-combine-upright: all;">2024</span>年<span style="text-combine-upright: all;">08</span>月<span style="text-combine-upright: all;">15</span>日。 <br> 项目代号:<span style="text-combine-upright: all;">XYZ</span>。 </div>
通过这些属性的组合使用,我们才能对竖排文本的视觉呈现有更精细、更符合设计预期的控制。不过,实际应用中,
text-orientation: upright
以上就是CSS如何实现文字竖向排列?writing-mode应用的详细内容,更多请关注php中文网其它相关文章!
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号