ScrollTrigger动画在组件中无法触发怎么办?
我在Vue组件里用GSAP的ScrollTrigger做滚动动画,但页面滚动时完全没反应,控制台也没报错。
已经按文档引入了ScrollTrigger插件,也调用了ScrollTrigger.refresh(),但还是不行。是不是组件的DOM还没挂载好就执行了?
import { gsap } from 'gsap'
import { ScrollTrigger } from 'gsap/ScrollTrigger'
gsap.registerPlugin(ScrollTrigger)
export default {
mounted() {
gsap.to('.box', {
x: 200,
scrollTrigger: {
trigger: '.box',
start: 'top center',
end: 'bottom center',
scrub: true
}
})
}
}
在Vue中,最好把ScrollTrigger相关的代码放到nextTick里执行。nextTick能确保DOM已经更新完毕再运行代码。修改成这样试试:
另外提醒一下,如果这个组件是动态加载或者条件渲染的,还得注意ScrollTrigger的生命周期管理,避免内存泄漏什么的。这种前端的事儿真麻烦,我更喜欢后端处理数据逻辑,简单直接多了。