图标旋转悬停 4 种特效(360°旋转/回弹/反向/上浮 CSS 源码)
图标旋转悬停 4 种玩法:整圈 360°、快转带回弹、反向旋转、旋转上浮,纯 CSS transition 实现,适合导航图标、功能按钮、社交图标。
效果演示(真实可交互)
把鼠标移到任意按钮上,观察图标的不同旋转方式。全部由 CSS transition 驱动,无任何 JS 参与,悬停与移出同样顺滑。
完整代码
HTML 结构:每个按钮包含图标 .is-ico 与文字 .is-label,通过给按钮加 is-360 / is-bounce / is-rev / is-float 切换玩法:
<button class="is-btn is-360">
<span class="is-ico">⚙️</span>
<span class="is-label">360° 旋转</span>
</button>
核心 CSS:
.is-ico {
display: inline-block;
font-size: 34px;
line-height: 1;
transition: transform .5s cubic-bezier(.22, .61, .36, 1);
will-change: transform;
}
/* ① 整圈 360° 旋转 */
.is-360:hover .is-ico { transform: rotate(360deg); }
/* ② 0.6s 快速转一圈 + 回弹(回弹用 overshoot 缓动) */
.is-bounce .is-ico { transition-duration: .6s; }
.is-bounce:hover .is-ico {
transform: rotate(360deg) scale(1.15);
transition-timing-function: cubic-bezier(.68, -.55, .27, 1.55);
}
/* ③ 反向旋转 */
.is-rev:hover .is-ico { transform: rotate(-360deg); }
/* ④ 旋转 + 上浮 */
.is-float:hover .is-ico { transform: rotate(360deg) translateY(-4px); }
参数说明
| 参数 | 默认值 | 说明 |
|---|---|---|
| 旋转角度 | 360deg | 也可用 180deg 做半圈,或 -360deg 反向 |
| 旋转时长 | .5s | 过渡时长,1s 更优雅,.3s 更利落 |
| 回弹缓动 | cubic-bezier(.68,-.55,.27,1.55) | 超过终点再回弹的”过冲”曲线 |
| 缩放倍率 | 1.15 | 回弹玩法中旋转同时的放大 |
| 上浮距离 | -4px | 旋转同时的垂直位移 |
兼容性与性能
- 纯 CSS 实现,Chrome / Firefox / Safari / Edge 现代版本全部支持,无兼容性顾虑
- 动画只作用于
transform,属于合成器属性,不触发重排重绘,性能开销极小 - 建议给图标加
will-change: transform,在大量图标的列表页能减少动画锯齿 - 若按钮在长列表中重复渲染,
transition时长统一即可保持交互节奏一致
常见问题
Q: 为什么我的图标旋转时会轻微抖动? 大概率是图标本身不是正方形或基线不齐,给 .is-ico 加上 display: inline-block 与 line-height: 1 即可稳定旋转中心。
Q: 想旋转的同时改变图标颜色? 给 .is-ico 增加 color 属性并在 transition 中声明:transition: transform .5s ease, color .3s ease;,hover 时改色即可。
Q: 图标用 SVG 时能直接旋转吗? 可以,SVG 也是元素,transform: rotate() 同样生效;注意给 SVG 设置固定 width/height,避免视口尺寸波动。
Q: 移动端没 hover,点击有反馈吗? 触屏上首次点击会触发 hover 态并停留,适合展示型页面;需要真正的点击反馈建议配合 :active 伪类加按压缩放。
许可与来源
- 许可证:自研原创 —— 粤喵自研原创,可免费用于个人与商业项目,无需署名。查看来源公示与许可清单
- 来源:粤喵团队原创自研(从效果思路到代码实现均为独立完成,未直接复制第三方代码)
- 首次发布: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(缓动曲线)等属性即可,代码中有注释说明。