要实现竖向文字波浪效果,必须结合 writing-mode 与 css 动画,因为 writing-mode 仅改变文本排列方向,无法产生动态波浪。1. 使用 writing-mode: vertical-rl 将文字设为垂直排列;2. 将每个字符用 span 包裹以实现独立控制;3. 为每个 span 应用 transform: translatey 的 animation 动画;4. 通过 animation-delay 为每个字符设置递增延迟,形成错位波浪感;5. 优化性能时应使用 transform 和 will-change: transform 提升渲染效率;6. 考虑兼容性,在老旧浏览器中测试或降级处理;7. 应用场景限于短文本如标题、logo 或装饰性内容,避免影响可读性;8. 控制动画幅度与速度,确保视觉舒适;9. 支持 prefers-reduced-motion 以提升可访问性;10. 注意维护成本,动态内容需用 javascript 自动拆分字符。该效果本质是布局与动效的结合,writing-mode 负责“站队”,animation 负责“跳舞”,二者缺一不可,最终实现竖向波浪文字的完整效果。

在CSS中实现文字竖向波浪效果,核心在于结合
writing-mode
animation
transform: translateY
要实现竖向文字波浪,你需要将每个字符独立包裹起来,通常是使用
<span>
writing-mode
<span>
transform: translateY
animation-delay
<div class="wavy-text-container">
<span>文</span><span>字</span><span>波</span><span>浪</span><span>效</span><span>果</span><span>很</span><span>酷</span><span>吧</span><span>!</span>
</div>
<style>
/* 容器样式:设置文字方向和基本布局 */
.wavy-text-container {
display: flex; /* 让子元素能更好地垂直排列 */
writing-mode: vertical-rl; /* 文字从右向左垂直排列 */
font-size: 3em; /* 字体大小,让效果更明显 */
font-family: 'Segoe UI', 'Microsoft YaHei', sans-serif; /* 字体选择 */
color: #4CAF50; /* 文字颜色 */
height: 350px; /* 容器高度,确保文字有足够空间 */
align-items: flex-start; /* 文字从容器顶部开始排列 */
justify-content: center; /* 整体居中显示 */
overflow: hidden; /* 防止动画超出容器 */
margin: 50px auto;
border: 1px dashed #ddd; /* 增加边框方便观察 */
padding: 20px;
box-sizing: border-box;
line-height: 1.2; /* 调整行高,避免字符间距过大或过小 */
}
/* 单个字符的样式:应用动画 */
.wavy-text-container span {
display: inline-block; /* 确保transform能正常作用 */
animation: verticalWave 1.8s ease-in-out infinite alternate; /* 动画名称、时长、缓动函数、循环、交替 */
will-change: transform; /* 优化动画性能 */
}
/* 动画关键帧:定义波浪的上下移动 */
@keyframes verticalWave {
0%, 100% {
transform: translateY(0); /* 动画开始和结束时在基线位置 */
}
50% {
transform: translateY(-10px); /* 动画中间时向上移动10像素,形成波峰 */
}
}
/* 通过 nth-child 实现动画延迟,创造波浪效果 */
/* 这里的延迟值需要根据实际文字数量和动画时长进行调整 */
.wavy-text-container span:nth-child(1) { animation-delay: 0s; }
.wavy-text-container span:nth-child(2) { animation-delay: 0.1s; }
.wavy-text-container span:nth-child(3) { animation-delay: 0.2s; }
.wavy-text-container span:nth-child(4) { animation-delay: 0.3s; }
.wavy-text-container span:nth-child(5) { animation-delay: 0.4s; }
.wavy-text-container span:nth-child(6) { animation-delay: 0.5s; }
.wavy-text-container span:nth-child(7) { animation-delay: 0.6s; }
.wavy-text-container span:nth-child(8) { animation-delay: 0.7s; }
.wavy-text-container span:nth-child(9) { animation-delay: 0.8s; }
.wavy-text-container span:nth-child(10) { animation-delay: 0.9s; }
.wavy-text-container span:nth-child(11) { animation-delay: 1.0s; }
.wavy-text-container span:nth-child(12) { animation-delay: 1.1s; }
/* ...根据文字长度继续添加 nth-child */
</style>writing-mode
这是一个很常见的误解,我发现不少初学者会以为
writing-mode
writing-mode
立即学习“前端免费学习笔记(深入)”;
但“波浪”效果,那完全是另一回事了。波浪意味着每个独立的文字字符需要有自己的、动态的、周期性的位移变化,而且这些变化还需要彼此之间有一个时间差,才能形成那种此起彼伏的连贯感。
writing-mode
animation
transform
animation-delay
在实际项目中,特别是当页面上有很多动画或者目标设备性能有限时,动画的性能优化就显得尤为重要。对于这种文字波浪效果,我通常会从几个方面去考虑:
首先,优先使用 transform
transform
top
left
margin
transform
translateY
其次,可以尝试添加
will-change: transform;
transform
will-change
关于兼容性,
writing-mode
transform
animation
writing-mode
-ms-
prefers-reduced-motion
竖向文字波浪效果,虽然看起来有点“花哨”,但在特定的设计场景下,它确实能带来意想不到的视觉冲击力。
从应用场景来看,我个人觉得它非常适合作为:
但在设计考量上,我们必须非常谨慎:
prefers-reduced-motion
<span>
总而言之,竖向文字波浪是一个很酷的视觉技巧,但它更像一道“配菜”,而非“主食”。用得巧,能为页面增色;用得滥,则可能适得其反。
以上就是CSS怎样实现文字竖向波浪?writing-mode+动画的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号