javascript - 将导航栏向下滚动到顶部后固定到顶部

标签 javascript jquery html

我希望我的导航栏仅在到达顶部时固定到顶部,而不是默认情况下(如 class="navbar-fixed-top")。 Bootstrap 词缀对我不起作用,所以我决定找一个 JQuery solition。 Demo of what I want

HTML:

<div id="nav-wrapper"><!--nav-wrapper-->
        <div class="container"><!--container-->
            <div class="row" id="navigation"><!--header-->
                <div class="col-md-12"><!--col-md-12-->
                    <div class="nav"><!--nav-->
                        <div class="#">
                         <ul id="#">
                            <li id="#" class="..."><a href="...">Home</a></li>
                            <li id="menu-item-6478" class="..."><a href="...">About EFTI</a></li>
                            <li id="menu-item-27" class="..."><a href="...">Our Coaches</a></li>
                            <li id="menu-item-6469" class="..."><a href="...">Blog</a></li>
                            <li id="menu-item-6568" class="..."><a href="...">EFTI Forum</a></li>
                            <li id="menu-item-6477" class="..."><a href="...">Contact Us</a></li>
                        </ul></div>                </div><!--nav-->
                 </div><!--col-md-12-->
                <div class="clearfix"></div>
            </div><!--header-->
        </div><!--container-->
    </div>

类似这样的代码可以完成这项工作吗:

$(window).bind("scroll", function(){ 
var div_pos_from_top = $('#nav').offset().top - $(window).scrollTop(); 

if (div_pos_from_top < 300) { 
$('#nav').css('... , ...'); 
} else { 
$('#nav').css('... , ....'); 
} 
});

最佳答案

也不是最有效的循环。将 var 放在外面,以便我们在加载文档时获得位置。但这是我发现的最好的方法,至少如果你要自己写一些东西的话。希望对您有所帮助!

你的代码有 nav 作为一个类,它需要被设置为一个 id。

var position = $("#nav").offset().top;

function stickyHeader() {
  if (position < $(document).scrollTop()) {
    $("#nav").addClass("sticky");
  } else {
    $("#nav").removeClass("sticky");
  }
}

$(window).scroll(function() {
  stickyHeader();
});
#nav {
  width: 100%;
  height: 40px;
  background: yellow;
  line-height: 40px;
  transition: all 1s ease-in-out;
}
#nav ul li {
  display: inline-block;
}
.sticky {
  position: fixed;
  top: 0;
  left: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="nav-wrapper">
  <!--nav-wrapper-->
  <div class="container">
    <!--container-->
    <div class="row" id="navigation">
      <!--header-->
      <div class="col-md-12">
        <!--col-md-12-->
        <div id="nav">
          <!--nav-->
          <div class="#">
            <ul id="#">
              <li id="#" class="..."><a href="...">Home</a>
              </li>
              <li id="menu-item-6478" class="..."><a href="...">About EFTI</a>
              </li>
              <li id="menu-item-27" class="..."><a href="...">Our Coaches</a>
              </li>
              <li id="menu-item-6469" class="..."><a href="...">Blog</a>
              </li>
              <li id="menu-item-6568" class="..."><a href="...">EFTI Forum</a>
              </li>
              <li id="menu-item-6477" class="..."><a href="...">Contact Us</a>
              </li>
            </ul>
          </div>
        </div>
        <!--nav-->
      </div>
      <!--col-md-12-->
      <div class="clearfix"></div>
    </div>
    <!--header-->

    <body>
      <h1>Scrolling Sticky Header</h1>

      <div class="content">
        <p>"Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem
          quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam
          eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit
          qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?"</p>
      </div>
      <div class="content">
        <p>"Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem
          quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam
          eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit
          qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?"</p>
        <p>"Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem
          quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam
          eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit
          qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?"</p>
      </div>
    </body>
  </div>
  <!--container-->
</div>

关于javascript - 将导航栏向下滚动到顶部后固定到顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26676835/

相关文章:

javascript - Jekyll 在 JavaScript 中添加空字符

Javascript - 调用内部函数时刷新参数值

javascript - Express中的Socket.io从客户端接收未定义的数据

javascript - 尝试将一个元素加载到另一个元素时出现意外字符串

javascript - jQuery 以通用方式隐藏除第一个图像之外的所有图像

javascript - 为什么即使 Vue 中不存在 el,mounted 钩子(Hook)也会触发?

javascript - map 中的可拖动标记

javascript - 使用 jQuery 访问 HTML 5 视频进度事件

用于最大化和最小化的 HTML 字符实体引用

javascript - 粘贴时输入字符串值为零