问题描述
我有一个页面,我在其中使用 Fullpage.js onLeave 函数和 CSS 创建了多个动画。
我的问题是当我离开第二部分时,第三部分的动画运行良好。但是当我滚动回第 2 部分并再次向下滚动到第 3 部分时,动画被窃听了 - 我试图让 onleave 函数只运行一次,然后保持这些类的原样。
这是我目前的代码:
$(document).ready(function() {
$('#fullpage').fullpage({
//options here
scrolloverflow:true,scrollingSpeed: 900,navigation: true,slidesNavigation: true,onLeave: function(origin,destination,direction){
var loadedSection = this;
//Section 2 Eigenschaften
if(origin.index == 1 && direction == 'down'){
//Gradient Hintergrund
$(".gradientcircle").toggleClass("animate");
//Eigenschaften Titel Opacity 1S Delay
setTimeout(function(){
$(".eigenschaften").toggleClass("animate1");
},1000);
//Eigenschaften Titel TranslateY 2S Delay
setTimeout(function(){
$(".eigenschaften").toggleClass("animate2");
},2000);
}
//SECTION 3 KENNTNISSE
if(origin.index == 2 && direction == 'down'){
//White Circle Background
$(".whitecircle").toggleClass("animate");
//Grey Circle Background
$(".greycircle").toggleClass("animate");
//Gradient Hintergrund
setTimeout(function(){
$(".gradientcircle2").toggleClass("animate");
},500);
//KENNTNISSE TITEL
setTimeout(function(){
$(".kenntnisse-titel").toggleClass("animate");
},1500);
//KENNTNISSE SUBTITLE
setTimeout(function(){
$(".kenntnisse-subtitle").toggleClass("animate");
},1750);
//KENNTNISSE SHORTCODE
setTimeout(function(){
$(".kenntnisse-shortcode").toggleClass("animate");
},2000);
}
}
});
});
有人知道如何只触发一次 onLeave 函数吗?
提前致谢
解决方法
您可以使用标志来跟踪当前状态并了解动画是否已经触发。
类似于:
var numSections = 10;
var isAnimationFired = new Array(numSections).fill(false);
...
new fullpage('#fullpage',{
onLeave: function(origin,destination,direction){
// checking the flag to see if animation was fired for
// this destination section
if(!isAnimationFired[destination.index]){
if(destination.index === 1){
// fire animation
fireAnimationHere();
isAnimationFired[destination.index] = true;
}
}
}
});