我有这个推特引导代码

  <div class='navbar navbar-fixed-top'>
    <div class='navbar-inner'>
      <div class='container'>
        <a class='btn btn-navbar' data-target='.nav-collapse' data-toggle='collapse'>
          <span class='icon-bar'></span>
          <span class='icon-bar'></span>
          <span class='icon-bar'></span>
        </a>
        <div class='nav-collapse'>
          <ul class='nav'>
            <li class='active'>
              <a href='some_url'>My Home</a>
            </li>
            <li>
              <a href='some_url'>Option 1 </a>
            </li>
            <li>
              <a href='some_url'>Another option</a>
            </li>
            <li>
              <a href='some_url'>Another option</a>
            </li>
          </ul>
        </div>
      </div>
    </div>
  </div>

但是当我查看页面的开始部分时,导航栏挡住了页面顶部附近的一些内容。有什么想法,如何使它下推其余的内容较低时,页面的顶部被查看,以便内容不被导航栏阻挡?


当前回答

我使用jQuery来解决这个问题。这是BS 3.0.0的代码片段:

$(window).resize(function () { 
    $('body').css('padding-top', parseInt($('#main-navbar').css("height"))+10);
});

$(window).load(function () { 
    $('body').css('padding-top', parseInt($('#main-navbar').css("height"))+10);        
});

其他回答

编辑:此解决方案不适用于Bootstrap的新版本,其中navbar-inverse和navbar-static-top类不可用。

使用MVC 5,我修复我的方式,是简单地添加我自己的Site.css,在其他人之后加载,用下面的行: 身体{填充:0}

并且我改变了_Layout开始的代码。Cshtml,为:

<body>
    <div class="navbar navbar-inverse navbar-static-top">
        <div class="container">
            @if (User.Identity.IsAuthenticated) {
                <div class="top-navbar">

你可以使用.stick-top,它可以在滚动时将导航条固定在顶部,而不需要添加任何css填充

<div class="container-fluid mt-3">
  <nav class="navbar navbar-expand-sm bg-white navbar-light sticky-top pt-0">
    <a class="navbar-brand" href="/">
      <img src="/images/logo-full.png" alt="logo" width="150">
    </a>
    <ul class="navbar-nav">
      <li class="nav-item">
        <a class="nav-link" href="/">Home</a>
      </li>
    </ul>
  </nav>
  <div class="row">
     .....
  </div>
</div>

<div class='navbar' data-spy="affix" data-offset-top="0">

如果您的导航栏最初位于页面的顶部,则将该值设置为0。否则,将data-offset-top的值设置为导航栏上方内容的值。

同时,你需要修改css如下:

.affix{
  width:100%;
  top:0;
  z-index: 10;
}

bootstrap v4 starter模板css使用:

body {
  padding-top: 5rem;
}

如果使用响应式引导,添加这样的填充是不够的。在这种情况下,当你调整窗口大小时,你会在页面顶部和导航栏之间得到一个间隙。正确的解决方案是这样的:

body {
  padding-top: 60px;
}
@media (max-width: 979px) {
  body {
    padding-top: 0px;
  }
}