$(“body”)。scrollTop()在Safari中不会更新

时间:2012-11-04 14:57:28

标签: javascript jquery

我正在网站上工作:

http://beta.projektopia.se/

正文有几个背景图像,这些图像在滚动时更新如下:

$(document).ready(function(){

    $(document).scroll(function(){
        var scrollfactor=$("body").scrollTop()*0.2;
        var centerscrollpos =scrollfactor+613;
        var docheight = $(document).height();
        var windowheight = $(window).height();
        var bottompos = (docheight-980)-((docheight-windowheight)*0.2)+scrollfactor;
        var scrollpos = 'center '+scrollfactor+'px,center '+bottompos+'px, center '+ centerscrollpos+'px,center 0px';
        $("body").css("background-position", scrollpos);
    });
});

很多计算,但重要的是创建了一个滚动条,在滚动时应该改变背景的位置,以创建视差效果。它在chrome中效果很好,但是在firefox中,变量scrollfactor(假设获取当前滚动位置)不会更新。

ps,由于缺乏正确的doctype,有些人会遇到这个问题。我相信我已经正确地宣布了这个:

<!DOCTYPE html>

2 个答案:

答案 0 :(得分:0)

scrollTop jQuery方法has been known to be problematic

根据浏览器的不同,您可能需要使用$('html, body').scrollTop()$(document).scrollTop()$(window).scrollTop()

答案 1 :(得分:0)

对我来说,问题是overflow元素上的任何html属性。 删除它的那一刻,我的.scrollTop()开始正常工作。 我仍然需要页面上的全局overflow-x: hidden属性,因此我只在body元素上进行了设置。