【问题标题】:How to make a sticky menu at top of browser when scrolling?滚动时如何在浏览器顶部制​​作粘性菜单?
【发布时间】:2014-02-02 17:37:45
【问题描述】:

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

谢谢

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;
}

【问题讨论】:

  • “不工作”... 怎么不工作?你需要更好地描述你得到的行为,以及你想要的行为

标签: javascript jquery menu position


【解决方案1】:

我为它做了一个 jsFiddle。

http://jsfiddle.net/gA8e5/

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

【讨论】:

  • 有没有办法在不闪烁的情况下使用它?
  • 如果“闪烁”是指我认为你的意思应该更好? jsfiddle.net/gA8e5/1
  • 谢谢你的花开太棒了!!!不过还没有让它工作,这也能在移动设备上工作吗?还是这是一个全新的问题
  • 也是放置 javascript 的最佳位置,我认为这可能是我做错了,如果你想自己检查一下,你可以在 www.mildenhire.com/bigsmile,你如果你这样做了,那将是一个救命稻草。 :)
  • 应该可以在手机上工作,大多数手机浏览器都支持“固定”属性,但它们处理滚动事件的方式也与桌面浏览器不同,因为滚动事件是在用户完成触摸屏幕后触发的。有关详细信息,请参阅链接。 developer.apple.com/library/safari/documentation/…
【解决方案2】:

您的#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;
}

【讨论】:

  • 'position: fixed' 正在被 jQuery 添加
  • 他只需要把它放在 CSS 中。它已经过测试。
  • 我想我不是很清楚,我希望菜单在页面向下滚动时变为sticky top:0px。首先,虽然它是 top:100px。我不希望它被粘在页面顶部,只有当页面向下滚动时。到 div,是不是更清楚?道歉...
  • 啊好吧!别担心朋友。我很高兴@robjtede 解决了你的问题 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-01
  • 2015-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-07
相关资源
最近更新 更多