You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 03:07:02