jQuery动画窗口滚动

时间:2014-08-17 18:01:49

标签: javascript jquery html ajax

我想在窗口滚动到底部滑动一个div。当文件达到800(底部)Div应该向右滚动0而小于800它应该滑动并隐藏。

问题是当滚动到底部div正在滑动并显示但是当滚动到顶部时它不会滑动和隐藏。

这是我的代码

$(document).scroll(function () { // remove "$"
    var s = $("#slidebox");
    var y = $(this).scrollTop();        
    if (y > 800) {
        s.animate({"right":"-450px"}, "slow");
    } else if (y < 800) {

        s.animate({"right":"0px"}, "slow");
    }
});

基本上我想隐藏并显示(带有滑动效果)文档滚动到底部的d​​iv。

检查jsfiddle下面的滚动。

jsfiddle

2 个答案:

答案 0 :(得分:3)

一方面,user390 ....的回答是正确的,因为高度计算不正确。

另一方面,动画的工作方式是它们一个接一个地排队,所以有时div不会滑入/滑开,直到它完成之前的其他所有内容。使用.stop() fixes the issue

var s = $("#slidebox");

$(document).scroll(function () { // remove "$"
    var y = $(this).scrollTop() + $(window).height();        
    console.log(y);
    if (y > 800) {
        s.stop().animate({"right":"-450px"}, "slow");
    } else {
        s.stop().animate({"right":"0px"}, "slow");
    }
});

答案 1 :(得分:1)

您的问题是,如果声明错误,您使用的“我是否到达底部”的价值。

以下是您应该使用的计算值:

$(document).scroll(function () { // remove "$"
    var s = $("#slidebox");
    var y = $(this).scrollTop();
    var bottom = jQuery(document).height() - jQuery(window).height();
    if (y >= bottom) {
        s.animate({"right":"-450px"}, "slow");
    } else {
        s.animate({"right":"0px"}, "slow");
    }
});

另外,如果你不想让人们搞砸它,我还建议你在触发“animate”功能之前在你的动画元素上使用.stop(true,true)。