我有这个推特引导代码

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

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


当前回答

这里会出现两个问题:

页面加载(内容隐藏) 像这样的内部链接会滚动到顶部,并被导航栏隐藏:

<导航>…< /导航 > <!——70像素高——> <a href="#hello">hello</a> <!——点击向下滚动——> <hr style="margin: 100px"> <h1 id="hello">World</h1> <!——帮助!我隐藏了70像素!-->

引导4 w/内部页面链接

为了修复1),正如Martijn Burger上面所说,bootstrap v4 starter模板css使用:

body {
  padding-top: 5rem;
}

要解决这个问题,请检查一下。这段代码大部分工作(但不是第二次点击相同的哈希):

window.addEventListener("hashchange", function() { scrollBy(0, -70) })

这段代码用jQuery动画链接(不是slim jQuery):

  // inline theme global code here
  $(document).ready(function() {
    var body = $('html,body'), NAVBAR_HEIGHT = 70;
    function smoothScrollingTo(target) {
      if($(target)) body.animate({scrollTop:$(target).offset().top - NAVBAR_HEIGHT}, 500);
    }
    $('a[href*=\\#]').on('click', function(event){
      event.preventDefault();
      smoothScrollingTo(this.hash);
    });
    $(document).ready(function(){
      smoothScrollingTo(location.hash);
    });
  })

其他回答

我使用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);        
});

从Twitter的例子中可以看到,在包含响应式样式声明的行之前添加这个:

<style> 
    body {
        padding-top: 60px;
    }
</style>

像这样:

<link href="Z/bootstrap/css/bootstrap.min.css" rel="stylesheet" />
<style type="text/css">
    body {
        padding-top: 60px;
    }
</style>
<link href="Z/bootstrap/css/bootstrap-responsive.min.css" rel="stylesheet" />

您可以根据屏幕分辨率设置空白

@media screen and (min-width:768px) and (max-width:991px) {
body {
    margin-top:100px;
}

@media screen and (min-width:992px) and (max-width:1199px) {
  body {
    margin-top:50px;
  }
}

body{
  padding-top: 10%;
}

#nav{
   position: fixed;
   background-color: #8b0000;
   width: 100%;
   top:0;
}

这里会出现两个问题:

页面加载(内容隐藏) 像这样的内部链接会滚动到顶部,并被导航栏隐藏:

<导航>…< /导航 > <!——70像素高——> <a href="#hello">hello</a> <!——点击向下滚动——> <hr style="margin: 100px"> <h1 id="hello">World</h1> <!——帮助!我隐藏了70像素!-->

引导4 w/内部页面链接

为了修复1),正如Martijn Burger上面所说,bootstrap v4 starter模板css使用:

body {
  padding-top: 5rem;
}

要解决这个问题,请检查一下。这段代码大部分工作(但不是第二次点击相同的哈希):

window.addEventListener("hashchange", function() { scrollBy(0, -70) })

这段代码用jQuery动画链接(不是slim jQuery):

  // inline theme global code here
  $(document).ready(function() {
    var body = $('html,body'), NAVBAR_HEIGHT = 70;
    function smoothScrollingTo(target) {
      if($(target)) body.animate({scrollTop:$(target).offset().top - NAVBAR_HEIGHT}, 500);
    }
    $('a[href*=\\#]').on('click', function(event){
      event.preventDefault();
      smoothScrollingTo(this.hash);
    });
    $(document).ready(function(){
      smoothScrollingTo(location.hash);
    });
  })

添加到你的CSS:

body { 
    padding-top: 65px; 
}

Bootstrap文档:

固定的导航条会覆盖你的其他内容,除非你在正文的顶部添加填充。