翻转文字(逐字 X 轴翻转交错 CSS 源码)
翻转文字组件源码:逐字绕 X 轴翻转 360° 并带交错延迟与回弹缓动,支持悬停触发与按钮单次翻转,纯 CSS 3D 变换实现,适合 Logo 标语与强调型标题。
效果演示(真实可交互)
下方「粤喵翻转过山车」七个字,把鼠标放上去,每个字会像过山车一样绕水平轴翻转一圈,相邻字依次错开 0.05 秒,偶数位反向翻转,产生波浪般的交错感。点击「翻转一次」按钮,所有字会同步翻一个 360°,结束后恢复;取消勾选「悬停翻转」可以关闭悬停触发,只保留按钮控制。
粤喵翻转过山车
完整代码
HTML 结构:JS 把词语拆成字符 span,并写入错峰延迟:
<div class="fp-stage">
<p class="fp-word" id="fpWord">粤喵翻转过山车</p>
</div>
核心 CSS:父容器开 perspective 建立 3D 视场,字符默认在悬停时用 transition 翻转,偶数字反向:
.fp-stage { perspective: 600px; }
.fp-word span {
display: inline-block;
transform-origin: 50% 50%;
transition: transform .7s cubic-bezier(.34, 1.56, .64, 1) var(--d, 0s);
}
.fp-word.hoverable:hover span { transform: rotateX(360deg); }
.fp-word.hoverable:hover span:nth-child(2n) { transform: rotateX(-360deg); }
按钮单次翻转用关键帧 + animationend 清理:
.fp-word span.flip { animation: fpFlip .8s cubic-bezier(.34, 1.56, .64, 1) both; animation-delay: var(--d, 0s); }
@keyframes fpFlip {
0% { transform: rotateX(0); }
100% { transform: rotateX(360deg); }
}
btn.addEventListener('click', () => {
[...word.children].forEach((s) => {
s.classList.add('flip');
s.addEventListener('animationend', () => s.classList.remove('flip'), { once: true });
});
});
参数说明
| 参数 | 默认值 | 说明 |
|---|---|---|
| 透视距离 | 600px | perspective 越小翻转立体感越强 |
| 翻转时长 | .7s / .8s | 悬停过渡与按钮动画的时长 |
错峰延迟 --d | i × 0.05s | 相邻字翻转的时间差 |
| 翻转角度 | ±360° | 奇数位正向、偶数位反向 |
| 缓动 | cubic-bezier(.34, 1.56, .64, 1) | 带回弹的缓出曲线 |
兼容性与性能
perspective与rotateX属标准 CSS 3D 变换,现代浏览器原生支持,无前缀要求- 变换走合成层,逐字翻转性能良好;单行建议不超过 20 个字符
transform-origin默认 50% 50%,如需「翻书」感可改为50% 100%(底边为轴)- 悬停翻转依赖
:hover,触屏设备无悬停态,请保留按钮触发作为移动端入口
常见问题
Q: 翻转时文字看起来是扁的? 透视距离太小(如 100px)会过度透视。加大到 500–800px,翻转过程更接近真实的「翻面」。
Q: 想做成垂直翻页效果? 把 rotateX 换成 rotateY,并把 transform-origin 改为 0 50%(左边为轴),就是常见的翻牌动画。
Q: 触屏上没有悬停怎么触发? 本组件已提供「翻转一次」按钮;也可以把悬停类改为 :active 或监听 touchstart。
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(缓动曲线)等属性即可,代码中有注释说明。