TweenMax 动画结束后元素位置怎么回弹了? ♫羽沫 提问于 2026-03-15 22:21:19 阅读 40 交互 我用 TweenMax 给一个 div 做了位移动画,从 left: 0 移动到 left: 200px,动画完成后却发现元素又跳回原来的位置了。明明没写 reverse 或者其他重置逻辑啊? 我试过加 overwrite: true 和 clearProps: false,但都没用。是不是哪里默认行为没注意到?代码大概是这样的: gsap.to('.box', { duration: 1, left: '200px', ease: 'power2.out' }); TweenMax用户体验 我来解答 赞 12 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 端木柯佳 Lv1 这个问题很典型,十有八九是 CSS 的 transition 在搞鬼。 你检查一下那个 div 的 CSS,有木有写 transition: all 0.3s 之类的?如果有的话,GSAP 动画是跑完了,但 CSS 的 transition 会默默地把属性"过渡"回原始值,看起来就像回弹了。 解决办法很简单: 第一种,在动画开始前把 transition 关掉: gsap.set('.box', { transition: 'none' }); gsap.to('.box', { duration: 1, left: '200px', ease: 'power2.out' }); 第二种,用 overwrite 参数硬刚: gsap.to('.box', { duration: 1, left: '200px', ease: 'power2.out', overwrite: 'auto' }); 第三种,动画结束后强制设置一下最终值当"定心丸": gsap.to('.box', { duration: 1, left: '200px', ease: 'power2.out', onComplete: function() { gsap.set('.box', { left: '200px' }); } }); 如果是 WordPress 主题的问题,有些主题会全局性地给所有元素加过渡效果,这种情况下第一种方法最稳,在你的动画脚本开头先统一清掉 transition。 你先试试第一种,看看能不能解决。 回复 点赞 2026-03-16 20:19 加载更多 相关推荐 1 回答 62 浏览 TweenMax 动画结束后元素位置怎么恢复原状? 我用 TweenMax 给一个按钮加了个点击缩放动画,但动画播完后元素就停在缩放后的状态了。我想让它动画结束自动回到原始大小,试过加 clearProps: "transform" 但好像没用? 这是... 艳丽 Dev 交互 2026-03-16 05:21:17 2 回答 83 浏览 TweenMax在React组件中动画不执行是怎么回事? 我在React里用TweenMax给一个div加淡入动画,但页面加载后元素直接显示,完全没有动画效果。控制台也没报错,我试过把动画逻辑放到useEffect里,也检查了ref是否正确绑定,但就是不动。... 极客薪羽 交互 2026-03-09 12:37:20 1 回答 46 浏览 TweenMax 动画不生效,元素没动是为什么? 我用 TweenMax 给一个 div 加了淡入动画,但页面加载后完全没反应,元素还是透明的。控制台也没报错,是不是哪里写错了? 我试过把 duration 调大、检查了元素是否在 DOM 里,也确认... 司马巧云 交互 2026-03-02 18:51:20 2 回答 80 浏览 为什么TweenMax的动画在移动端卡顿不流畅? 大家好,我在用TweenMax做移动端页面滑动动画时,发现iOS设备上动画特别卡顿,明明设置了ease参数和缓动曲线啊。 我尝试过这样写动画: // 使用TweenMax移动元素 TweenMax.t... ლ玉娟 交互 2026-02-09 14:57:29 2 回答 59 浏览 GSAP动画结束后元素怎么恢复原状? 我用GSAP做了一个按钮点击后的缩放动画,但动画结束后元素就保持在缩放状态了,没法自动变回原来的大小。明明没加repeat,也不该卡住啊? 试过在to里加onComplete回调手动重置,但感觉很麻烦... 子硕 交互 2026-03-02 02:34:20 2 回答 422 浏览 为什么给元素加旋转动画后位置偏移了? 我在用CSS的transform: rotate()做旋转动画时,元素旋转后的位置明显偏移了。比如给一个按钮加360度旋转,动画结束后按钮整体向右下方移位了。 我尝试过设置position: abso... Des.翌耀 组件 2026-02-09 13:34:26 2 回答 244 浏览 页面切换动画组件如何实现平滑过渡?元素位置跳动问题怎么解决? 我在用Vue的Transition组件做路由切换动画时,新页面元素总会出现0.5秒的跳动。已经给容器加了固定宽高,但当使用transform: translateX()动画时,内容区域还是会有位置偏移... 司空栾同 组件 2026-02-04 01:49:28 1 回答 70 浏览 画布缩放后元素位置偏移怎么办? 我在做一个可视化编辑器,用 transform: scale() 缩放画布后,拖拽元素的位置总是对不上,鼠标点哪都不准,感觉坐标没跟着缩放比例调整。 试过用 getBoundingClientRect... 宇文世梅 交互 2026-03-26 03:01:19 2 回答 117 浏览 CSS动画结束后如何保持最终状态不回退? 我用CSS写了个简单的放大动画,但动画播完后元素又缩回去了,怎么让它停在最后的状态啊? 试过加了animation-fill-mode: forwards,但好像没起作用,是不是哪里写错了? @key... ლ光纬 交互 2026-03-03 23:34:19 2 回答 53 浏览 用 interact.js 实现拖拽时元素位置偏移怎么办? 我在用 interact.js 做一个可拖拽的卡片组件,但每次拖动时元素都会突然跳一下,感觉位置偏移了。我试过调整 dragMoveListener 里的 translate 值,但还是不对。 这是我... 小佳怡 交互 2026-03-02 10:23:20
你检查一下那个 div 的 CSS,有木有写 transition: all 0.3s 之类的?如果有的话,GSAP 动画是跑完了,但 CSS 的 transition 会默默地把属性"过渡"回原始值,看起来就像回弹了。
解决办法很简单:
第一种,在动画开始前把 transition 关掉:
第二种,用 overwrite 参数硬刚:
第三种,动画结束后强制设置一下最终值当"定心丸":
如果是 WordPress 主题的问题,有些主题会全局性地给所有元素加过渡效果,这种情况下第一种方法最稳,在你的动画脚本开头先统一清掉 transition。
你先试试第一种,看看能不能解决。