【问题标题】:javascript / jquery - page is jerking while setting scrolltopjavascript / jquery - 页面在设置滚动顶部时抖动
【发布时间】:2013-02-20 07:34:02
【问题描述】:

我正在使用一个灯箱,在其中我遇到了 jquery scrolltop() 函数的一些问题。 当灯箱打开时,它会隐藏文档的滚动条(如果有)并将垂直滚动位置保存在变量中,当它关闭时,它会带回文档的滚动条并将滚动条设置为旧位置。这是代码:

            $('html').css({
                'overflow-y' : 'auto'
            });
            $('html').scrollTop(org_scrolltop);

在这种情况下scrollTop 函数根本不起作用。所以我尝试了setTimeout 函数来设置滚动位置。这是代码:

            $('html').css({
                'overflow-y' : 'auto'
            });
            setTimeout(function(){
                $('html').scrollTop(org_scrolltop);
            },10);

现在它可以工作了,但页面时不时地抖动。我也尝试了animate() 功能,但没有成功。

可能发生的情况是,当我将overflow-y 设置为auto 时,首先浏览器将滚动条设置为其默认位置,即0,然后$('html').scrollTop(org_scrolltop); 这行代码正在执行。在这个过程中页面会抖动。

我想知道是否有任何干净的方法可以做到这一点,我的意思是不使用setTimeout。任何想法都会非常有帮助。

【问题讨论】:

  • “在这个过程中页面突然关闭”——措辞!! :)

标签: jquery scroll scrollbar scrolltop


【解决方案1】:

使用这个:

$('html, body').animate({
    scrollTop: 0
}, 1000);

显然将 0 更改为您要滚动到的位置,并将 1000 更改为您希望滚动的时间。

【讨论】:

  • 嘿,马特,我也试过了,但动画功能的问题是你必须等待 1000 或 ** 毫秒才能设置滚动条位置,我不希望那样。而且,如果我尝试将动画时间设置为更少,则页面抖动或根本不起作用。
猜你喜欢
  • 2011-05-11
  • 1970-01-01
  • 2010-11-11
  • 2014-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多