滚动时如何在浏览器顶部制​​作粘性菜单?

时间:2014-02-02 17:37:45

标签: javascript jquery menu position

您好我正在尝试将菜单设置在粘性菜单下方,我希望它在浏览器向下滚动时粘在屏幕顶部。下面是我到目前为止的代码,但它不起作用,有人可以告诉我哪里出错了。

谢谢

HTML

</div>
<ul id="menu">
<li><a href="#">HOME</a></li>
<li><a href="#">TREATMENTS</a>
    <ul>
        <li><a href="#">Claim Kandi</a></li>
        <li><a href="#">Claim Kandi2</a></li>
        <li><a href="#">Claim Kandi3</a></li>
    </ul>
</li>
<li><a href="#">ABOUT</a></li>
<li><a href="#">GALLERY</a></li>
<li><a href="#">CONTACT</a></li>
<li><a href="#">BOOKING</a></li>

的javascript

<script type="text/javascript">$(document).scroll(function() { 
var y = $(document).scrollTop(), header = $("#menu"); if(y >= 300) 
{ header.css({position: "fixed", "top" : "0", "left" : "0"}); } else {header.css("position", "relative"); } });</script>

CSS

#menu {
display: inline-block;
min-width: 100%;
list-style:none;
border-top: 1px solid #ccc;
border-left: 1px solid #ccc;
border-bottom: 1px solid #ccc;
position: relative;
top:112px;
background-color:#666;
text-align: center;
}

2 个答案:

答案 0 :(得分:2)

我为它制作了一个jsFiddle。

http://jsfiddle.net/gA8e5/

我使用addClass()removeClass()是一种更优雅的方式。

答案 1 :(得分:1)

您似乎没有固定#menu的位置。你改为relative。试试这个:

#menu {
    display: inline-block;
    position: fixed;
    min-width: 100%;
    list-style:none;
    border-top: 1px solid #ccc;
    border-left: 1px solid #ccc;
    border-bottom: 1px solid #ccc;
    top:112px;
    background-color:#666;
    text-align: center;
}