JQuery浮动菜单栏,滚动位置和延迟

Posted

技术标签:

【中文标题】JQuery浮动菜单栏,滚动位置和延迟【英文标题】:JQuery floating menu bar, scroll position and delay 【发布时间】:2013-10-05 09:15:23 【问题描述】:

我正在制作一个菜单栏,而且我对 JQuery 相当陌生。我希望菜单栏在向下滚动时延迟,但在向上滚动时我希望它不会延迟地粘在浏览器窗口的顶部。现在两边的延迟是一样的,当滚动到顶部时,没有延迟。

我希望有人可以帮助我:)

$(document).ready(function()
var speed = 1000;
var speedtop = 0;
var menu = $('nav#header');
var offset = menu.offset().top;
var menuStartPos = menu.position().top;
var top_offset = 0;

updateFloatingMenu(); //we don't have this just yet

$(window).scroll(function()
    updateFloatingMenu();
);

function updateFloatingMenu()
    var scrollAmount = $(document).scrollTop();
    var newPosition = menuStartPos + scrollAmount;

    if(scrollAmount > offset)
        var topPos = (newPosition-offset) + top_offset;
        menu.stop().animate(top: topPos, speed);
    else
        menu.stop().animate(top: menuStartPos, speedtop);
    
;
);

【问题讨论】:

【参考方案1】:

在你的 CSS 中添加一个类:

#header.fixed 
    position:fixed;
    top: 0 !important; /* important, to override inline style-tag */

向上滚动时将此类添加到菜单中,以始终将其固定在页面顶部

var offset = 0;

function updateFloatingMenu()
    var scrollAmount = $(document).scrollTop();

    if (scrollAmount > offset)
        menu.stop().removeClass('fixed').animate('top': scrollAmount, speed);
     else 
        menu.stop().addClass('fixed')
        menu.css('top', scrollAmount); // Set top here so it's in the right place when reverting scroll
    

    offset = scrollAmount; // Update current offset

【讨论】:

以上是关于JQuery浮动菜单栏,滚动位置和延迟的主要内容,如果未能解决你的问题,请参考以下文章

jquery页面滚动显示浮动菜单栏锚点定位效果

滚动时如何使菜单栏固定在顶部

位置:固定在菜单栏上 - 希望很简单

双向滚动时隐藏固定菜单

向下滚动时,顶部的菜单栏(Div 元素)仍然存在

滚动时将菜单栏固定在顶部