【发布时间】:2021-10-04 08:13:40
【问题描述】:
我正在使用 Barba.js 和 GSAP 为我的网站创建页面转换。在看了一些教程并摆弄了一下之后,我设法在两个页面之间创建了一个幻灯片过渡。事情是我还有其他 javascript 内容,用于每个页面上的其他功能元素。在第一个页面加载时,一切似乎都正常。
然后我点击一个链接转换到下一页,转换很顺利,但突然间我在同一个 JS 文件中编写的所有元素都不再起作用了。
我仍然可以在每个页面之间完美转换,但其他 JS 内容似乎都没有工作。我在控制台中没有收到任何错误,所以我不知道这里到底发生了什么。
这是我的 Barba 初始化的样子。
barba.init({
sync: true,
transitions: [{
async leave(data) {
const done = this.async();
animationLeave();
await delay(1000);
done();
},
enter(data) {
animationEnter();
},
once(data) {
animationEnter();
}
}, {
name: 'home-transition',
to: {
namespace: ['home']
},
async once(data) {
homeAnimation();
}
}]
});
AnimationEnter、AnimationLeave 和 HomeAnimation 方法只是链接到 GSAP 动画。 例如,这里是 AnimationLeave 的样子:
function animationLeave() {
var tl = gsap.timeline();
tl.to('.loading-screen', {
duration: 1,
width: '100%',
left: '0%',
ease: 'expo.easeInOut'
});
tl.to('.loading-screen', {
duration: .8,
width: '100%',
left: '100%',
ease: 'expo.easeInOut',
delay: .3
});
tl.set('.loading-screen', {
left: '-100%',
width: '0%'
});
}
感谢任何帮助!
【问题讨论】:
-
所以 gsap 和 Barba 运行良好,但其他脚本不起作用?
-
@Greg-- 据我所知,在第一次过渡之后,Barba 是唯一剩下的工作了。转换后,我立即在控制台中收到 GSAP 错误。我的其他脚本都不起作用。我已经在这里和 gsap 论坛上与 Barba 一起多次看到过这个问题。如果找不到任何东西,我正在考虑切换到 Swup。
-
您需要在每次加载另一个页面后调用您的脚本(使用 DOM 的女巫),因为 DOM 树已更改,但脚本没有更改。在 Swup 将是同样的事情
-
Barba 和 Swup 看起来像使用 AJAX 加载内容,您需要等到内容加载完毕然后调用您的脚本
-
转换后我立即在控制台中收到 GSAP 错误 >> 您遇到了什么类型的错误?
标签: javascript css gsap barbajs