我有这个推特引导代码

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

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


当前回答

到目前为止,我发现的最好的解决方案,不涉及硬编码高度和断点是添加一个额外的<nav…标记到标记。

<nav class="navbar navbar-expand-md" aria-hidden="true">
    <a class="navbar-brand" href="#">Navbar</a>
</nav>
<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
    <a class="navbar-brand" href="#">Navbar</a>

通过这样做@media断点是相同的,高度是相同的(前提是你的navbar-brand是导航栏中最高的对象,但你可以很容易地替换非固定顶部导航栏中的另一个元素。

这失败的地方是屏幕阅读器,现在将呈现2个导航栏品牌元素。这表明需要一个not-for-sr类来防止该元素显示给屏幕阅读器。然而,这个类并不存在https://getbootstrap.com/docs/4.0/utilities/screenreaders/

我已经尝试用aria-hidden="true"来弥补屏幕阅读器的问题,但https://www.accessibility-developer-guide.com/examples/sensible-aria-usage/hidden/似乎表明,当屏幕阅读器处于聚焦模式时,这可能不会工作,这当然是你真正需要它工作的唯一时间…

其他回答

添加:

.navbar {
  position: relative;
}

对于引导3,类navbar-static-top而不是navbar-fixed-top可以防止这个问题,除非你需要导航栏始终可见。

你应该加上

#page {
  padding-top: 65px
}

为了不破坏粘性页脚或其他东西

添加到你的JS:

jQuery(document).ready(function($) {
  $("body").css({
    'padding-top': $(".navbar").outerHeight() + 'px'
  })
});

使用百分比是比像素更好的解决方案。

body {
  padding-top: 10%; //This works regardless of display size.
}

如果需要,您仍然可以显式地添加不同的断点,正如@spajus在另一个回答中提到的那样