Bootstrap 3 - 如何在导航栏上粘贴导航栏

时间:2017-01-19 22:30:59

标签: html css html5 twitter-bootstrap twitter-bootstrap-3

我要做的是当您滚动浏览时,导航栏会保持在页面顶部。由于我对JavaScript很陌生,我看了一些教程,但是,它们都没有真正使用Bootstrap导航栏。我只是想知道是否有办法这样做,以便它与Bootstrap列一起使用。

另外,我怎么能这样做,以便在它滚动时,背景颜色开始淡入?

以下是导航栏的HTML代码,如果有帮助:

   <div class="container">
    <nav class="navbar navbar-default" id="mNavbar">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false" id="toggle">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
        </div>

        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
          <ul class="nav navbar-nav">
            <li><a href="#">Home</a></li>
            <li><a href="#section2">Services</a></li>
            <li><a href="#section3">Contact</a></li>
          </ul>
        </div>
      </div>
    </nav>
  </div>

2 个答案:

答案 0 :(得分:8)

Bootstrap 3有一个类.navbar-fixed-top,可以应用于nav元素以固定到页面顶部。它适用于不同屏幕尺寸的所有基本导航栏功能。作为官方documentation的一部分,有一个例子。

<nav class="navbar navbar-default navbar-fixed-top" id="mNavbar">

如果您需要它从屏幕顶部以一定量的px变粘,那么您需要将滚动事件处理程序附加到页面。然后,您将检查页面滚动的距离,然后应用固定的导航类或设置样式以固定到特定位置。像这样:

$(document).ready(function() {
  var $navbar = $("#mNavbar");
  
  AdjustHeader(); // Incase the user loads the page from halfway down (or something);
  $(window).scroll(function() {
      AdjustHeader();
  });
  
  function AdjustHeader(){
    if ($(window).scrollTop() > 60) {
      if (!$navbar.hasClass("navbar-fixed-top")) {
        $navbar.addClass("navbar-fixed-top");
      }
    } else {
      $navbar.removeClass("navbar-fixed-top");
    }
  }
});
body{
  position: relative;
  display: block;
  height: 1000px;
  overflow-y: scroll;
}

.navbar{
  top: 60px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />

<div class="container">
  <nav class="navbar navbar-default" id="mNavbar">
    <div class="container">
      <div class="navbar-header">
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false" id="toggle">
          <span class="sr-only">Toggle navigation</span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
      </div>

      <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
        <ul class="nav navbar-nav">
          <li><a href="#">Home</a>
          </li>
          <li><a href="#section2">Services</a>
          </li>
          <li><a href="#section3">Contact</a>
          </li>
        </ul>
      </div>
    </div>
  </nav>
</div>

我不确定你的意思是填充被添加到顶部和底部,但你可以通过在Bootstrap版本之后将.navbar-fixed-top添加到样式表并更新填充值来覆盖CSS。可能有一个top CSS值会使导航栏远离屏幕顶部,您可以通过将top设置为0来解决此问题。

希望这有帮助!

答案 1 :(得分:0)

要向下滚动,请将navbar-fixed-top添加到导航代码中,这里的抓点是它会粘在页面顶部,如此

<div class="userTableElementLogout">
    <input type="submit" name="ctl01$LogOffButton" value="LOG OFF" id="log-off-button">
</div>

https://jsfiddle.net/nyd7sd1q/