首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当滚动经过一个点时设置导航动画

问当滚动经过一个点时设置导航动画
EN

Stack Overflow用户
提问于 2013-04-27 16:13:56
回答 1查看 767关注 0票数 0

我正在尝试动画(从顶部滑动)我的导航菜单,它是由scroll()函数触发的。如果用户滚动超过40,导航菜单需要动画。当用户滚动少于40次时,导航菜单必须再次显示动画(向上滑动)。

它确实适用于下面jsFiddle中的代码,但当用户从40以上滚动到底部时,每次滚动时都会调用该函数,因此导航菜单向下滑动非常缓慢且不平滑。

有人知道如何修复这个问题吗?使用另一个函数,然后使用scroll()?谢谢!

下面是jsFiddle,下面是jQuery代码。

代码语言:javascript
复制
$(document).ready(function() {

    /** HIDE MENU **/
    $(".menu").css("margin-top", "-88px");

    $(window).scroll(function() {

        var verschil = ($(window).scrollTop() / 5);

        if (verschil > 40) 
        $('.menu').animate({'margin-top': '0px' }, {duration: 500, queue: false});

        else if (verschil < 40)
        $('.menu').animate({'margin-top': '-88px' }, {duration: 500, queue: false});
    });

});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-27 16:26:17

尝试添加以下两个控制变量:

代码语言:javascript
复制
$(document).ready(function() {

    /** HIDE MENU **/
    $(".menu").css("margin-top", "-88px");
    var mustSlideDown = true;
    var mustSlideUp = false;
    $(window).scroll(function() {

        var verschil = ($(window).scrollTop() / 5);

        if (verschil > 40 && mustSlideDown)  {

            $('.menu').animate({'margin-top': '0px' }, {duration: 500, queue: false});
            mustSlideDown = false;
            mustSlideUp = true;
        }
        else if (verschil < 40 && mustSlideUp) {

            $('.menu').animate({'margin-top': '-88px' }, {duration: 500, queue: false});
            mustSlideUp = false;
            mustSlideDown = true;
        }
    });

});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16249859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档