TweenMax 动画结束后元素位置怎么恢复原状? 艳丽 Dev 提问于 2026-03-16 05:21:17 阅读 21 交互 我用 TweenMax 给一个按钮加了个点击缩放动画,但动画播完后元素就停在缩放后的状态了。我想让它动画结束自动回到原始大小,试过加 clearProps: "transform" 但好像没用? 这是我的代码: gsap.to('.btn', { duration: 0.3, scale: 0.9, clearProps: "transform" }); 是不是哪里写错了?或者有没有更靠谱的办法让它复原? 我来解答 赞 10 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 迷人的嘉蕊 Lv1 兄弟,你这个用法不太对。clearProps 是用来清除行内样式的,不是让动画复原的。 最简单的方法是用 yoyo + repeat: gsap.to('.btn', { duration: 0.3, scale: 0.9, yoyo: true, repeat: 1 }); 这样动画会执行两遍:第一遍缩放到 0.9,第二遍自动弹回来。yoyo: true 就是让动画往返播放,repeat: 1 表示多播一遍,加起来就是缩小→恢复。 如果你想要点击时缩小、松手时恢复,也可以这样写: const btn = document.querySelector('.btn'); btn.addEventListener('mousedown', () => { gsap.to(btn, { scale: 0.9, duration: 0.15 }); }); btn.addEventListener('mouseup', () => { gsap.to(btn, { scale: 1, duration: 0.15 }); }); btn.addEventListener('mouseleave', () => { gsap.to(btn, { scale: 1, duration: 0.15 }); }); mouseleave 别忘了加,不然鼠标移出元素后它会卡在缩小状态。 第一种 yoyo 的方式最省事,看你具体需求选一个吧。 回复 点赞 2026-03-16 21:04 加载更多 相关推荐 1 回答 10 浏览 TweenMax 动画结束后元素位置怎么回弹了? 我用 TweenMax 给一个 div 做了位移动画,从 left: 0 移动到 left: 200px,动画完成后却发现元素又跳回原来的位置了。明明没写 reverse 或者其他重置逻辑啊? 我试过... ♫羽沫 交互 2026-03-15 22:21:19 2 回答 44 浏览 TweenMax在React组件中动画不执行是怎么回事? 我在React里用TweenMax给一个div加淡入动画,但页面加载后元素直接显示,完全没有动画效果。控制台也没报错,我试过把动画逻辑放到useEffect里,也检查了ref是否正确绑定,但就是不动。... 极客薪羽 交互 2026-03-09 12:37:20 1 回答 17 浏览 TweenMax 动画不生效,元素没动是为什么? 我用 TweenMax 给一个 div 加了淡入动画,但页面加载后完全没反应,元素还是透明的。控制台也没报错,是不是哪里写错了? 我试过把 duration 调大、检查了元素是否在 DOM 里,也确认... 司马巧云 交互 2026-03-02 18:51:20 2 回答 17 浏览 GSAP动画结束后元素怎么恢复原状? 我用GSAP做了一个按钮点击后的缩放动画,但动画结束后元素就保持在缩放状态了,没法自动变回原来的大小。明明没加repeat,也不该卡住啊? 试过在to里加onComplete回调手动重置,但感觉很麻烦... 子硕 交互 2026-03-02 02:34:20 2 回答 54 浏览 为什么TweenMax的动画在移动端卡顿不流畅? 大家好,我在用TweenMax做移动端页面滑动动画时,发现iOS设备上动画特别卡顿,明明设置了ease参数和缓动曲线啊。 我尝试过这样写动画: // 使用TweenMax移动元素 TweenMax.t... ლ玉娟 交互 2026-02-09 14:57:29 2 回答 390 浏览 为什么给元素加旋转动画后位置偏移了? 我在用CSS的transform: rotate()做旋转动画时,元素旋转后的位置明显偏移了。比如给一个按钮加360度旋转,动画结束后按钮整体向右下方移位了。 我尝试过设置position: abso... Des.翌耀 组件 2026-02-09 13:34:26 2 回答 197 浏览 页面切换动画组件如何实现平滑过渡?元素位置跳动问题怎么解决? 我在用Vue的Transition组件做路由切换动画时,新页面元素总会出现0.5秒的跳动。已经给容器加了固定宽高,但当使用transform: translateX()动画时,内容区域还是会有位置偏移... 司空栾同 组件 2026-02-04 01:49:28 2 回答 88 浏览 CSS动画结束后如何保持最终状态不回退? 我用CSS写了个简单的放大动画,但动画播完后元素又缩回去了,怎么让它停在最后的状态啊? 试过加了animation-fill-mode: forwards,但好像没起作用,是不是哪里写错了? @key... ლ光纬 交互 2026-03-03 23:34:19 2 回答 22 浏览 用 interact.js 实现拖拽时元素位置偏移怎么办? 我在用 interact.js 做一个可拖拽的卡片组件,但每次拖动时元素都会突然跳一下,感觉位置偏移了。我试过调整 dragMoveListener 里的 translate 值,但还是不对。 这是我... 小佳怡 交互 2026-03-02 10:23:20 1 回答 21 浏览 React Spring动画结束后如何自动移除内联样式? 我用 React Spring 做了个简单的淡入动画,但动画结束后元素上还留着 transform 和 opacity 的内联样式,导致后续 CSS 样式被覆盖了。试过 onRest 回调里手动清除,... 雨橙 框架 2026-03-01 06:39:18
最简单的方法是用 yoyo + repeat:
这样动画会执行两遍:第一遍缩放到 0.9,第二遍自动弹回来。yoyo: true 就是让动画往返播放,repeat: 1 表示多播一遍,加起来就是缩小→恢复。
如果你想要点击时缩小、松手时恢复,也可以这样写:
mouseleave 别忘了加,不然鼠标移出元素后它会卡在缩小状态。
第一种 yoyo 的方式最省事,看你具体需求选一个吧。