旋转词语切换动画(循环词语轮播,速度方向实时可调)
旋转词语动画:固定前缀后跟一个词语框,词语垂直旋转循环切换,切换间隔、上翻下翻方向、暂停继续均可实时调节,渐变文字质感,零依赖自研实现。
效果演示(真实可交互)
🌀 词语循环上翻/下翻,切换间隔、方向、暂停继续均可实时调节
适合放在 Hero 区强调「动词/名词」:如「今天最想 · 写代码 / 喝咖啡 / 去旅行」。演示区内置切换间隔、方向与暂停控件,改动即时生效。
完整代码
<div class="rw-stage">
<span class="rw-prefix">今天最想</span>
<span class="rw-box"><span class="rw-word" id="rwWord">写代码</span></span>
</div>
.rw-box {
display: inline-block;
height: 1.25em;
overflow: hidden;
vertical-align: bottom;
min-width: 2.6em;
text-align: center;
}
.rw-word {
display: inline-block;
transition: transform .55s cubic-bezier(.4, 0, .2, 1), opacity .4s ease;
}
const words = ['写代码', '喝咖啡', '去旅行'];
let idx = 0;
setInterval(() => {
idx = (idx + 1) % words.length;
// 1. 旧词 translateY(120%) 滑出(上翻方向)
// 2. 420ms 后换成新词、从 translateY(-120%) 位置复位
// 3. 强制重排后过渡回 translateY(0),形成「旋转」动感
}, 2200);
核心思路:词语框固定高度加 overflow: hidden 裁剪,切换时先把词条位移出可视区,替换文字后再从另一侧滑入,配合缓动曲线形成旋转切换感。翻转方向只需把所有位移符号取反;想要左右翻转则把位移轴换成 translateX。
参数说明
| 参数 | 位置 | 说明 |
|---|---|---|
| 词语列表 | JS 中 words 数组 | 任意数量,按需增删 |
| 切换间隔 | 控件或 setInterval 第二参数 | 1000-5000ms,默认 2200ms |
| 方向 | dir 变量(UP / DOWN) | 上翻与下翻,位移符号相反 |
| 缓动 | cubic-bezier(.4,0,.2,1) | 标准进出曲线,可换 ease-out 更轻快 |
| 文字渐变 | .rw-word 的 background-clip | 透明文字 + 渐变背景,单色也支持 |
兼容性与性能
- 全程只更新单个词条的
transform与opacity,两者都走合成器线程,不触发布局重排,帧率稳定 overflow: hidden裁剪可触发 GPU 加速;词条数量少、定时器开销可忽略,页面滚动不受影响- 无需任何第三方库与 polyfill,Chrome / Safari / Firefox / Edge 及 iOS / Android 现代浏览器均可运行
- 中文长词场景下建议为
.rw-box设置min-width与text-align: center,避免切换瞬间抖动
常见问题
Q: 词条长度不一样,切换时会抖动吗? 会有一点。给 .rw-box 设置等于最长词宽度的 min-width 即可固定容器宽度,切换过程完全稳定。
Q: 想要左右翻转而不是上下翻转? 把位移轴从 translateY 换成 translateX,并把容器高度改为宽度限制即可,其余逻辑完全一致。
Q: 怎么让切换在鼠标悬停时暂停? 在 .rw-box 上监听 mouseenter 调用 clearInterval,mouseleave 重新启动定时器即可,与演示中「暂停/继续」按钮同思路。
Q: 可以商用吗? 可以。本组件为粤喵自研原创代码,免费商用无需署名,无任何协议限制。
许可与来源
- 许可证:自研原创 —— 粤喵自研原创,可免费用于个人与商业项目,无需署名。查看来源公示与许可清单
- 来源:粤喵团队原创自研(从效果思路到代码实现均为独立完成,未直接复制第三方代码)
- 首次发布:2026-09-01 · 最近更新:2026-09-01
- 修改日志:2026-09-01 首次发布;2026-09-13 补充许可证与来源标注、复制按钮说明与法务页入口
- 纠错:联系页面 / min@cactus.asia,2 个工作日内核实处理
常见问题
这个组件可以商用吗?
可以。本组件为粤喵自研原创,可免费用于个人和商业项目,无需署名。
浏览器兼容性如何?
支持所有现代浏览器(Chrome / Firefox / Safari / Edge 最新版本)。旧版 IE 不支持 CSS 动画相关特性。
怎么修改动画参数?
直接调整 CSS 中的 animation-duration(时长)、animation-timing-function(缓动曲线)等属性即可,代码中有注释说明。