CSS/HTML中如何实现竖排文本顶部对齐?
解决方案
要实现垂直排列的日文文本在水平居中的同时从容器顶部开始对齐,核心是用现代CSS布局替代过时的align属性,结合writing-mode的排版特性调整对齐逻辑:
关键调整点
- 移除HTML中过时的
align="center"属性,改用Flexbox或Grid布局精确控制对齐 - 由于
writing-mode: vertical-lr改变了排版轴,普通vertical-align不再生效,需通过容器布局属性控制垂直对齐
完整代码示例
HTML
<div class="obi-container"> <p>どんな時だってずっと二人で。どんな時だって側にいるから。<br> 過去はどこかにしまっておけ。ここからそう遠くないだろう。観たこともない景色。<br> 今夜のことは誰にも言わない。誰にも言わない。</p> </div>
CSS
/* 容器:水平居中,垂直顶部对齐,占满视口高度方便预览 */ .obi-container { display: flex; justify-content: center; /* 水平方向居中 */ align-items: flex-start; /* 垂直方向顶部对齐 */ min-height: 100vh; margin: 0; } p { writing-mode: vertical-lr; text-orientation: upright; color: #fe87b3; font-family: "Helvetica"; font-size: 18px; }
适配实体腰封场景(侧边固定横幅)
如果要做类似书籍腰封的侧边固定效果,可调整容器样式:
.obi-container { position: fixed; top: 0; right: 0; height: 100vh; width: 60px; background-color: #000; /* 腰封背景 */ display: flex; justify-content: center; align-items: flex-start; padding-top: 20px; /* 顶部留白 */ } p { writing-mode: vertical-lr; text-orientation: upright; color: #fe87b3; font-family: "Helvetica"; font-size: 18px; margin: 0; }
原理说明
当使用writing-mode: vertical-lr时,元素的排版方向变为垂直流(从上到下),此时:
- Flexbox的
justify-content控制水平方向对齐,align-items控制垂直流方向的对齐 - 过时的
align属性无法适配这种排版轴变化,导致文本意外垂直居中
内容的提问来源于stack exchange,提问作者Shelby Smith
相关产品推荐
相关产品推荐

