旋转词语切换动画(循环词语轮播,速度方向实时可调)

JSCSS 许可:自研原创

旋转词语动画:固定前缀后跟一个词语框,词语垂直旋转循环切换,切换间隔、上翻下翻方向、暂停继续均可实时调节,渐变文字质感,零依赖自研实现。

效果演示(真实可交互)

🌀 词语循环上翻/下翻,切换间隔、方向、暂停继续均可实时调节

今天最想 写代码 ✨

适合放在 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透明文字 + 渐变背景,单色也支持

兼容性与性能

常见问题

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(缓动曲线)等属性即可,代码中有注释说明。

✍️ 作者与审核