Fullpage.js。添加滚动延迟

IT技术 javascript jquery css fullpage.js
2021-02-25 21:49:28

我有一个 div“框”,当用户滚动到下一页时,它使用“.fp-viewing”作为锚点来逐渐淡出过渡效果。问题是当 .fp-viewing 被触发时页面开始滚动,并在动画完成之前将框滚动到视野之外。

当触发 .fp-viewing 时,如何延迟滚动的开始,直到 box 在 4s 内完成动画?

.box{
  transition: all 4s ease-out;
  -webkit-transition: all 4s ease-out;
}

.fp-viewing-2 .box{
  opacity: 0;
}
4个回答

您可以使用 fullpage.js 提供的选项在移动发生之前取消它

在线复制

var delay = 2000; //milliseconds
var timeoutId;
var animationIsFinished = false;

new fullpage('#fullpage', {
      sectionsColor: ['yellow', 'orange', '#C0C0C0', '#ADD8E6'],
    onLeave: function(origin, destination, direction){
        var curTime = new Date().getTime();

        //animating my element
        $('#element').addClass('animate');

        clearTimeout(timeoutId);

        timeoutId = setTimeout(function(){
            animationIsFinished = true;

            fullpage_api.moveTo(destination.index + 1);
        }, delay);

        return animationIsFinished;
    },
});
你没有以正确的方式去做。您应该onLeave callback在超时功能之外触发您的动画只需在您的元素中添加一个类即可触发它。您已经考虑过什么最适合您的目的,而课堂fp-viewing并非在这种情况下。
2021-04-16 21:49:28
我会试试你的建议,看看效果如何。非常感谢。
2021-04-29 21:49:28
我不确定我是否以正确的方式这样做。也许我需要一个不同的触发器来触发我的动画而不是 .fp-viewing。任何建议将不胜感激。谢谢。
2021-04-29 21:49:28
当“.fp-viewing”更改时触发我的 css 动画,当用户将鼠标滚动到新部分时触发 .fp-viewing。您粘贴的代码延迟了 .fp-viewing 的触发。那不是我需要的。我需要先触发 .fp-viewing,然后在滚动到下一部分开始之前延迟 5 秒,因为我的 css 动画是由 .fp-viewing 触发的,它需要在滚动到下一部分之前完成动画。
2021-05-04 21:49:28
感谢您的代码工作,但这不是我想要的。我想是我没有清楚地解释我需要什么是我的错。我观看了您的视频“使用 fullpage.js 在部分之间创建 css3 动画”,这就是我开发粘贴在第一条评论中的 css 动画代码的方式。
2021-05-11 21:49:28

#fullpage {
    transition-delay: 1s !important;
}

或修改 fullpage.js 中的 addAnimation 函数

对我来说,这个变体:

$(elem).fullpage({ 
/// opttions, 
onLeave: function(origin, destination, direction){ 
if(animationIsFinished === false){ 
// do some code 
} 
clearTimeout(timeoutId); 
timeoutId = setTimeout(function(){ 
animationIsFinished = true;
 $.fn.fullpage.moveTo(destination); 
   setTimeout(() => { 
     animationIsFinished = false; 
   }, 200); 
}, 600); 
return animationIsFinished; 

这既便宜又容易,但我只是将我需要的整页函数包装在自定义函数包装器中,然后在我准备好时使用settimeout(a la this answer)来触发它。

function slideWithDelay() {
    fullpage_api.moveSlideRight();
}

// Change slide on select
$('select').on('change',function(){
    setTimeout(slideWithDelay, 500);
})