如何在每个窗帘在中间相遇后添加滚动延迟

How can I add a delay to scroll after each curtain meets in the middle?

本文关键字:相遇 添加 滚动 延迟 在中间      更新时间:2023-09-26

我想在每个窗帘在中间相遇后立即暂停动画大约 20px 的滚动。 这是我的沙盒:

http://www.meetgeraldine.net/2016website/luke-test/

jQuery: http://snippi.com/s/vup8pw0

网页: http://snippi.com/s/bp5iceg

有没有办法让窗帘暂停大约 20px 的滚动,这样窗帘就不会在两个块在中间相遇后立即淡出?

如果您接受基于库的答案,那么有很好的解决方案:

斯克罗尔 https://github.com/Prinzhorn/skrollr

您可以看到教程,说明如何使用此库来实现您的目标:

伊哈特西红柿 https://ihatetomatoes.net/create-scrolling-slideshow-using-skrollr/


主要

思想是这样的:创建主要内容高度为 100%+20px 的页面,并使用 js 转换您的内容位置。当您的滚动在 50%-10px 和 50%+10px 之间时,您可以停止转换主要内容。

下面是一个定时动画转发器的示例。 它等待所有动画完成,然后在超时后重复它们。 不是 100% 确定这是您的愿望,但希望您可以从中构建:(请注意我没有测试此代码,但它应该可以工作。 需要 jQuery 进行延迟;

function pullCurtains(){
    $.when(
        $('body,html').animate({'scrollTop': target.offset().top}, 500, function(){ animating = false; }).promise(),
        $( '#mything-2' ).animate( { marginLeft : "-100px" }, 500 ).promise(),
        $( '#mything-3' ).animate( { width: 0 }, 1000 ).promise()
    ).done( function(){
        console.log( "All animations complete." );
        setTimeout(function() {
            // trigger new one in 2000 ms
            $(document).trigger('curtian');
        }, 2000);
    });
};
$(document).on('curtian',function(){
    pullCurtains();
});
// do first one
$(document).trigger('curtian');