导读:本期聚焦于小伙伴创作的《如何用CSS实现Div内文字垂直排版与90度逆时针旋转?》,敬请观看详情。想让网页里的标签文字竖着显示并向左倒转九十度,直接给div加writing-mode往往达不到预期。真正可靠的做法是结合transform的rotate函数与transform-origin定位。本文先厘清writing-mode和rotate的本质区别:前者改变文本流方向但不旋转字形,后者才真正转动字符。接着给出一段常见错误代码,比如仅用writing-mode:vertical-rl却希望文字逆时针横躺,结果只是竖排而非倒转。随后说明通过transform:rotate(-90deg)配合左侧定位,可让div内文字整体逆时针旋转并适应容器。掌握这两点,就能在侧边栏标题、表格表头等场景稳定实现垂直倒置排版。

在网页布局中,有时需要将某个div容器里的文字变成竖排并且整体向左旋转九十度,例如左侧导航的标题或者某些特殊报表的表头。很多初学者第一反应是调整文字书写方向,但实际上字符的朝向和文本流的走向是两个独立维度,只有搞清楚这一点才能写出稳定的样式。

如何用CSS实现Div内文字垂直排版与90度逆时针旋转?

理解文字排版与旋转的本质区别

CSS里控制文本走向的属性主要是writing-mode,它决定块级元素里行内内容是从上往下、从右往左还是横向排列。比如writing-mode: vertical-rl会让文字竖着写,但每个汉字仍然是正立的,只是行与行从右向左排。这种写法适合古文或者日文书籍版式,但并不能让字符本身发生角度倾斜。如果目标是让一行水平文字整体逆时针倒下,就必须使用变换属性。

transform: rotate(-90deg)则是把元素作为一个平面图形整体旋转,字符会随着盒子一起转动。这里负号表示逆时针,正号是顺时针。需要注意的是,旋转后元素在文档流中的占位并不会改变,视觉上跑出去的部分可能遮挡其他内容,因此通常还要配合transform-origin和定位来调整。不少人在调试时发现文字转了却跑到div外面,就是因为没有设置好旋转基点。

另外一个容易混淆的点是text-orientation,它只在writing-mode非横向时生效,用来控制字符是保持正立还是侧躺。但它依旧无法替代rotate函数完成任意角度倒置。从底层渲染看,writing-mode影响的是行盒生成逻辑,而transform是合成阶段的矩阵运算,两者处于不同渲染环节。

使用transform实现Div内文字90度逆时针旋转

最实用的方案是给目标div设定固定宽高,再用绝对或相对定位结合transform。下面这段代码展示了一个宽三十像素、高两百像素的容器,里面的文字经旋转后贴着左侧显示。我们把旋转基点设在左下角,这样文字逆时针倒下时会沿着容器左边排列。

.side-title {
  position: relative;
  width: 30px;
  height: 200px;
  border: 1px solid #ccc;
}
.side-title span {
  position: absolute;
  bottom: 0;
  left: 0;
  transform-origin: left bottom;
  transform: rotate(-90deg);
  white-space: nowrap;
}

对应的HTML结构可以是一个简单的<div class="side-title"><span>垂直标题</span></div>。这样span里的文字会以左下角为轴向左倒转,看起来就是沿着div左边缘竖排且字符朝左。如果希望文字在容器中央倒转,可以把transform-origin改成center center,并用topleft偏移调整。

这种作法相比单纯用writing-mode的优势在于角度自由,不仅能九十度,还能四十五度或者任意负值。缺点是需要手动算容器尺寸,否则旋转后的文字可能超出预期范围。对于动态内容,建议用JavaScript先测量文字宽度再设置div高度,避免截断。

writing-mode与rotate的组合及兼容性处理

在某些场景下,我们希望文字先竖排再微调角度,这时可叠加使用。例如先用writing-mode: vertical-rl让文本纵向流动,再对内部元素施加小角度rotate做艺术化倾斜。但如果是严格的九十度逆时针,直接用rotate(-90deg)即可,叠加writing-mode反而增加复杂度。

从浏览器支持看,transformwriting-mode在现代Chrome、Firefox、Safari以及Edge都没问题。唯一要注意的是旧版IE对writing-mode的语法不同,如果项目还需兼容IE,应写-ms-writing-mode前缀,而transform也要带-ms-transform。不过目前绝大多数系统已放弃IE,直接写标准属性就能覆盖用户。

为了便于维护,可以把旋转逻辑封装成工具类。比如定义.rotate-90-ccw类名统一设置transform: rotate(-90deg); transform-origin: left bottom;,在任意div上追加该类即可。这样在表格表头、侧边栏、楼层索引等位置复用,既保证视觉一致也减少样式冲突。最后提醒,旋转元素若需点击,其实际命中区域仍是旋转前的矩形,必要时用pointer-events或外层包裹处理交互盲区。

CSSvertical_texttransform_rotate修改时间:2026-08-13 10:03:45

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。