禁用垂直滚动但保持滚动事件

时间:2013-11-10 12:45:22

标签: jquery css scroll position

当用户滚动页面时,我想向下滑动div直到它到达最终位置,然后让浏览器像往常一样滚动。

我的第一个想法就是重置scroll事件中的scrollTop,如下所示:

$(window).scroll(function() {
    // 0 is the final position for `main`,
    // Initially set to -390px
    if(parseInt($('main').css('top')) < 0) {
        $(window).scrollTop(0); // <-------- nothing should happen

        // ... more stuff
    }
});

在Firefox中运行良好。但是当我在Safari中测试时,它会导致可怕的“反弹效应” 显然,因为Safari首先向下滚动,然后由于scrollTop(0)而将位置设置回来。

好的,另一个解决方案。为什么不将position: fixed设置为htmlbody?例如:

$(window).scroll(function() {
    if(parseInt($('main').css('top')) < 0) {
        $('html, body').css('position', 'fixed'); // <-------- next try

        // ... more stuff
    }
});

知道了!在Safari中运行良好,让我们检查一下Firefox ......没有任何反应! Firefox只触发一次滚动事件,直到我将html和body设置为fixed。

所以这是我的问题:如何避免垂直滚动跨浏览器,没有光学副作用并仍然得到滚动事件?

0 个答案:

没有答案