jQuery在向下滚动页面时使div滑入

Posted

技术标签:

【中文标题】jQuery在向下滚动页面时使div滑入【英文标题】:jQuery make div slide in when scrolling down page 【发布时间】:2013-02-08 04:56:24 【问题描述】:

当用户向下滚动页面时,我想让一个 div 从右侧滑到我的页面上(该 div 将包含一个链接,可将它们带回页面顶部)。这是我目前正在使用的代码:

jQuery(window).scroll(function() 
if (jQuery(this).scrollTop() > 100) 
    jQuery('.totop').animate( right: '0px' );
 else 
    jQuery('.totop').animate( right: '-300px' );

);

还有 CSS:

.totop 
position:fixed;
bottom:50%;
right:-300px;
width:300px;
height:100px;
font-size:30px;
color:white;
background:#f18500;

Div 的行为非常奇怪,当我向下滚动 div 大约需要 5 秒钟才能出现,然后它出现在视图中,但看起来它正在尝试再次滑落,然后保持静止,当我滑回顶部它消失了……但大约 5 秒后又消失了。希望得到一些帮助以找出我的代码有什么问题。

【问题讨论】:

查看这篇文章以创建滚动到页面顶部:recentsolutions.net/web-development/smooth-scroll 【参考方案1】:

您的动画正在排队,请使用.stop()

jQuery(window).scroll(function () 
    if (jQuery(this).scrollTop() > 100) 
        if (jQuery('.totop').hasClass('visible') == false) 
            jQuery('.totop').stop().animate(
                right: '0px'
            , function () 
                jQuery('.totop').addClass('visible')
            );
        
     else 
        if (jQuery('.totop').hasClass('visible') == true) 
            jQuery('.totop').stop().animate(
                right: '-300px'
            , function () 
                jQuery('.totop').removeClass('visible')
            );
        
    
);

演示:http://jsfiddle.net/MkJwm/

【讨论】:

这还不够好,我更新了我的答案。一旦幻灯片可见并且您继续向下滚动,动画就会再次开始。现在它只显示一次。 我非常喜欢这个。但是,如果他们不想看到 div,有没有办法让访问者点击它来关闭它? @Jornes 看看这个小提琴:jsfiddle.net/10dL7jb6。有一个切换按钮,您可以使用它隐藏和显示 div。隐藏时,div 的一小部分仍然可见,以便进行切换。如果距离顶部不到 100 像素,则 div 永远不可见。【参考方案2】:

类似这样的:

$(window).scroll(function()
    if ($(this).scrollTop() > 50) 
        $('#div-to-show').slideDown('slow');
     else 
        $('#div-to-show').slideUp('slow');
    
);

未测试。

【讨论】:

不是上下滑动的问题! 这对我来说无论如何都不适用于引导程序,因为导航栏很快就会消失并且无论我设置什么速度都会出现。我认为屏幕的一致移动很重要。

以上是关于jQuery在向下滚动页面时使div滑入的主要内容,如果未能解决你的问题,请参考以下文章

jquery 让DIV相当于body定位,然后随滚动条向下滚动

使用 jQuery Mobile 幻灯片转换保持滚动位置

带有页面闪烁的jQuery移动元素

使用 JQuery slidetoggle() 时屏幕不向下滚动

使用jquery向下滚动15%后更改div颜色[关闭]

div随页面滚动遇顶固定的两种方法(js&jQuery)