javascript - 如何在窗口滚动时为导航栏设置动画

标签 javascript jquery css

我想问一下是否有一种方法可以使用 jQuery animate() 方法在窗口滚动时为水平导航栏的顶部属性设置动画。

这是我使用的代码:

window.addEventListener("scroll", function() {
if (window.scrollY > 200) {
    $('#navbar').css({top:"100px"});
}
else {
    $('#navbar').css({top:"0px"});
}
},false); 

CSS:

#navbar{
top:0;
position:fixed;
transition: top 0.5s;
}

当您向下滚动 200 像素时,导航栏将其顶部位置从 0 更改为 100 像素; 这工作正常,但如果我更改方法并使用 .animate 代替 .css,

$('#navbar').animate({top:"100px"});    

它停止工作。有什么想法吗?

最佳答案

您可以使用 css transition 来完成此操作,而如何使用 jQuery addClass 而不是 css()

DEMO

$(window).on('scroll', function () {
    if ($(this).scrollTop() > 200) {
        if (!$('.navbar').hasClass('expand')) {
            $('.navbar').addClass('expand');
        }
    } else {
        if ($('.navbar').hasClass('expand')) {
            $('.navbar').removeClass('expand');
        }
    }
});


.navbar {
    top: 0;
    position: fixed;
    transition: top 0.5s;
}

.navbar.expand {
    top: 100px;
}

关于javascript - 如何在窗口滚动时为导航栏设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25951760/

相关文章:

javascript - Canvas 大小不一致

css - rails 应用程序 : pipeline asset not working as expected

javascript - appcelerator - 在后台执行函数?

javascript - 如何检查用户是否连接到互联网

javascript - 如何使用Javascript实现动态翻页/ curl ?

javascript - jQuery 可以从字符串变量中的 HTML 标记获取属性吗

Css 没有正确对齐段落

javascript - 如何在 Sequelize 中读取表的列属性?

javascript - 如何在数据更改时触发 react 渲染

javascript - 基本 JavaScript 项目任务模态结构