<p>要实现css文字竖向波浪效果,需将文字拆分为单个字符并分别应用动画。1. 使用javascript或手动将每个字符包裹在<span>中,并设置css变量--i表示索引;2. 容器使用writing-mode: vertical-lr实现竖向排列,并通过flex布局居中;3. 每个span应用animation和animation-delay,利用calc(var(--i) * 0.1s)实现错时动画;4. @keyframes中通过translatey和rotate定义上下波动与旋转,配合ease-in-out使动画更自然;5. 调整animation-duration控制整体速度,transform-origin设定旋转基点,overflow: hidden防止溢出。该方法通过分解文字为独立动画单元,使每个字符按序执行位移与旋转,形成连贯波浪动态,解决了整体transform无法实现逐字差异的问题。此技术可拓展至呼吸、抖动、逐字显现、弹跳、翻转等多种字符级动画效果,核心在于字符拆分与独立动画控制,结合writing-mode与transform实现丰富视觉表现。</p>

要实现CSS文字竖向波浪效果,核心在于结合
writing-mode
transform
animation
animation-delay
要实现竖向波浪文字,你需要将文本拆分成单个字符(或者至少是小块),然后对每个字符应用垂直书写模式和独立的动画。
HTML 结构: 首先,将你的文字用
<span>
<span>
<div class="wavy-text-container">
<span style="--i:0;">波</span>
<span style="--i:1;">浪</span>
<span style="--i:2;">文</span>
<span style="--i:3;">字</span>
<span style="--i:4;">效</span>
<span style="--i:5;">果</span>
</div>这里我用了一个CSS变量
--i
立即学习“前端免费学习笔记(深入)”;
CSS 样式:
.wavy-text-container {
display: flex; /* 或者 block,但flex便于整体居中 */
writing-mode: vertical-lr; /* 文字从左到右垂直排列 */
font-size: 3em;
font-family: 'Arial', sans-serif;
color: #333;
height: 300px; /* 给容器一个高度,以便文字垂直显示 */
justify-content: center; /* 如果是flex,可以居中 */
align-items: center;
overflow: hidden; /* 避免波浪超出容器 */
}
.wavy-text-container span {
display: inline-block; /* 确保transform能正常作用 */
animation: waveEffect 1.5s ease-in-out infinite;
/* 通过CSS变量控制延迟,制造波浪效果 */
animation-delay: calc(var(--i) * 0.1s);
transform-origin: center bottom; /* 旋转中心可以调整 */
}
@keyframes waveEffect {
0%, 100% {
transform: translateY(0) rotate(0deg); /* 初始和结束状态 */
}
25% {
transform: translateY(-10px) rotate(5deg); /* 向上移动并轻微旋转 */
}
75% {
transform: translateY(10px) rotate(-5deg); /* 向下移动并轻微旋转 */
}
}这个例子中,
waveEffect
animation-delay
嗯,这是个好问题,也是我当初踩过的一个坑。当你第一次想到“竖向波浪”的时候,很自然地会想到
writing-mode
transform
writing-mode: vertical-lr;
vertical-rl
div
p
transform: rotate()
translateY()
波浪的精髓在于连续性和个体差异。想象一下海浪,每一个波峰和波谷都是由无数水滴协同运动形成的,但每个水滴在不同时刻的位置和状态都不完全相同。文字波浪也是一样,你需要让每个字拥有自己的“生命”,在不同的时间点执行不同的动画片段。这意味着你必须把文字拆开,让每个字符成为一个独立的动画单元。这就是为什么上面解决方案里,我强调要用
<span>
writing-mode
transform
要精细控制波浪的形状和速度,我们主要在
@keyframes
animation
首先是形状,这主要由
@keyframes
transform
translate
translateY
translateY(0)
translateY(-10px)
translateY(10px)
rotate
rotate
rotate(5deg)
rotate(-5deg)
scale
scale
animation-timing-function
ease
linear
ease-in-out
cubic-bezier(...)
其次是速度,这主要由
animation-duration
animation-delay
animation-duration
animation-delay
calc(var(--i) * 0.1s)
0.1s
animation-iteration-count
infinite
通过这些参数的组合和微调,你几乎可以实现任何你想要的波浪效果,从平静的涟漪到汹涌的波涛,一切尽在你的掌握之中。
这种将文字拆分成独立可控单元,并结合
writing-mode
transform
我脑子里立刻蹦出好几个点子:
“呼吸”或“脉冲”文字:让每个字符周期性地进行轻微的缩放(
scale
opacity
animation-delay
“抖动”或“故障(Glitch)”文字:通过快速、随机的
translate
rotate
skew
filter: blur()
drop-shadow()
steps()
“逐字出现/消失”效果:结合
opacity
transform
translateY
animation-delay
fade-in
“弹跳”或“下落”文字:每个字符从上方或下方“弹跳”进入指定位置,模拟重力效果。这需要更精细的
@keyframes
cubic-bezier
“文字云”动态:如果将文字分散在页面上,每个字符都有自己的动画,比如随机的
translate
rotate
“翻转”或“旋转”文字:让每个字符围绕自身轴线进行3D旋转(
rotateX
rotateY
rotateZ
核心思想是,一旦你把文字分解成独立的、可操作的单元,并且掌握了
transform
animation
以上就是CSS怎样实现文字竖向波浪?writing-mode+transform的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号