当元素的下边缘到达时,jquery将元素粘贴到浏览器视口的底部 - 使用resize.browsersize更新变量

时间:2013-01-29 19:36:11

标签: jquery jsfiddle

http://jsfiddle.net/rwr4X/2/

我制作了一个jquery脚本 - 它不是很棒而且体积很大,但它的一半有用......

var $buzz = $('#buzz'),
    viewportHeight = $(window).height(),
    buzzHeight = 182,
    buzzTop = $buzz.offset().top + buzzHeight,
    buzzPosition = buzzTop - viewportHeight;

$(window).bind("resize.browsersize", function () {

    var viewportHeight = $(window).height(),
        buzzTop = $buzz.offset().top + buzzHeight,
        buzzPosition = buzzTop - viewportHeight;

}).trigger("resize.browsersize");

$(window).scroll(function () {

    if ($(window).scrollTop() >= buzzPosition) {

        $buzz.css({
            position: 'fixed',
            bottom: 0
        });

    } else {

        $buzz.removeAttr("style");

    }

});

现在上面的脚本可以工作,但只适用于初始的viewportHeight变量。

基本上在我的真实项目中,我的页面上有ajax元素,font-face和各种大小的动画。当浏览器视口大小发生变化时,我似乎无法更新变量,这会导致buzz跳转。

请参阅我的小提琴上面的剧本:http://jsfiddle.net/rwr4X/2/

如果向下滚动页面,您将看到嗡嗡声,当img的下边缘到达视口底部时,位置会切换到固定位置。而且似乎是无缝的,流畅的。

但是,如果您通过ajax等模拟我的页面变得更大 - 单击fiddle中的蓝色和绿色div,每次点击添加50px。然后,如果您向上和向下滚动,当达到滚动点时,您将看到嗡嗡声跳跃/跳过。这是因为我的scrollTo变量没有更新到视口的新大小。

任何人都可以帮我修复它,所以如果视口改变大小,嗡嗡声似乎总是无缝地粘在视口的底部。

提前致谢。


查看小提琴:http://jsfiddle.net/rwr4X/2/

0 个答案:

没有答案