如何使用 jQuery 在页面加载时 block/disable 滚动几秒钟?

How to block/disable scrolling for seconds on page load with jQuery?

我正在使用此代码,使页面在页面加载时向下滚动到 class:

    $(function(){
            $('html, body').delay(2000).animate({
                scrollTop: $('.myDiv').offset().top
            }, 2000);
            return false;
        });

当页面加载时,我滚动时与动画发生冲突。如何在延迟期间或动画开始之前禁用滚动。

我已经搜索并找到了几个关于如何在 click function 上禁用滚动的示例,但我无法在我的代码中实现它。

谢谢。我真的希望你能帮助我。请原谅我的英语。

通过将溢出设置为隐藏来隐藏页面加载时的滚动

html, body {
  overflow: hidden;
}

运行 设置超时 2 秒,然后将溢出设置为自动,然后像这样设置动画

$(function(){
  setTimeout(function(){
    $('html, body')
    .css({
      'overflow': 'auto'
    })
    .animate({
      scrollTop: $('.myDiv').offset().top
    }, 2000);
  }, 2000);
});

这是一个demo

使用 delay 没问题,但其功能有限,如文档中所述 here

The .delay() method is best for delaying between queued jQuery effects. Because it is limited—it doesn't, for example, offer a way to cancel the delay—.delay() is not a replacement for JavaScript's native setTimeout function, which may be more appropriate for certain use cases.