如何制作固定位置菜单栏?

时间:2013-12-17 09:49:52

标签: css css-position fixed menubar

我想设置菜单栏Like THIS的样式。 当您向下滚动时,它固定在站点的顶部,并且在页面加载时它不是固定的位置。

如何用CSS完成?

2 个答案:

答案 0 :(得分:7)

您所追求的是“粘性导航栏/菜单”。

最简单的方法是将以下CSS添加到菜单/导航栏

position:fixed;
top:0px;

也就是说,为了使效果更接近你发布的效果,你可能会想要使用一些jQuery,例如:

$(window).bind('scroll', function() {
     if ($(window).scrollTop() > 50) {
         $('.menu').addClass('fixed');
     }
     else {
         $('.menu').removeClass('fixed');
     }
});

通过将CSS类“固定”添加到.menu元素(固定类),滚动经过某个点(例如50px)后,将菜单栏“修复”到页面顶部只会是例如上面的CSS。

列出了一些很好的例子here

答案 1 :(得分:2)

来源: Creating a sticky nav css and jquery

<强> HTML

<div id="menu">
    <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">About</a></li>
        <li><a href="#">Blog</a></li>
        <li><a href="#">Shop</a></li>
        <li><a href="#">Contact</a></li>
    </ul>
</div>
<div id="content">
This is some content 0<br/>
This is some content 1<br/>
This is some content 2<br/>
This is some content 3<br/>
This is some content 4<br/>
This is some content 5<br/>
This is some content 6<br/>
This is some content 7<br/>
This is some content 8<br/>
<div id="data" />
</div>

<强> CSS

* {
    font-family: Consolas,Sans-serif;
    font-size: 10pt;
}
#menu {
    position: absolute;
    width: 100%;
}
#menu.out {
    position: fixed;
}
#menu ul {
    margin: 0;
    padding: 1em .5em;
    list-style: none;
    background-color: #fc9;
}
#menu ul li {
    display: inline-block;
}
#menu ul li a {
    padding: 5px .5em;
}
#content {
    background-color: #ebebee;           
    padding: 4em 1em 1em;
    height: 900px;
}

<强> JQuery的:

    var menu = $("#menu");
var ul = menu.find("ul");
var content = $("#content")[0];
var data = $("#data");
var menuHeight = menu[0].getBoundingClientRect().bottom;
var inView= true;

$(document).scroll(function(evt) {
    evt.preventDefault();
    var top = content.getBoundingClientRect().top;
    var nextInView = top+menuHeight > 0;

    if (inView ^ nextInView)
    {
        data.append("<div>Switching.</div>")
        inView = nextInView;
        if (inView)
        {
            menu.removeClass("out");
        }
        else
        {
            menu.addClass("out");
            ul.hide().slideDown("fast");
        }
    }
});

小提琴:Demo

礼貌:Robert Koritnik

希望这有帮助

快乐编码