【问题标题】:How to justify navbar-nav in Bootstrap 3如何在 Bootstrap 3 中证明 navbar-nav 的合理性
【发布时间】:2013-10-05 02:40:54
【问题描述】:

我试图在 Bootstrap 3 中证明 navbar(使导航栏内容拉伸)。我已将 margin: 0 auto; max-width: 1000px; 添加到 nav* 类中,并且还尝试添加 container 元素作为ul 的父级。作为最后的检查,我通过将navbar-justified 添加到navbar 类来执行in this answer 的建议,但这会导致左侧的所有内容都挤在一起而没有证明整个导航栏的合理性。

执行nav nav-justified ul 确实使ul 居中,但它不保留navbar-nav 类的样式,因为它不是ul 的一部分,而且看起来不太好当屏幕小于 768px 时。

如何证明 Bootstrap 3 navbar 的合理性?

编辑:对于那些对更完整答案感兴趣的人,这里是我在生产中使用的一些代码:

// Stylesheet
.navbar-nav>li {
  float: none;
}

// Navbar
<nav class="navbar navbar-default">
  <ul class="nav nav-justified navbar-nav">
    <li><a href="/">Home</a></li>
    <li><a href="group.html">Group</a></li>
    <li><a href="services.html">Services</a></li>
    <li><a href="positions.html">Positions</a></li>
  </ul>
</nav>

还有here is a working jsFiddle。您可能需要拉伸 result 框的大小才能正确显示。如果您有兴趣将实际列表居中而不将导航拉伸到全宽,请参阅David Taiaroa's jsFiddle

【问题讨论】:

    标签: twitter-bootstrap twitter-bootstrap-3 navbar


    【解决方案1】:

    您可以使用以下方法证明导航栏内容的合理性:

    @media (min-width: 768px){
      .navbar-nav{
         margin: 0 auto;
         display: table;
         table-layout: fixed;
         float: none;
      }
    }  
    

    现场观看:http://jsfiddle.net/panchroma/2fntE/

    【讨论】:

    • 这可以跨多个浏览器工作吗?不幸的是,我可能不得不支持 IE 7
    • @DavidTaiaroa,感谢您的提议 :) 实际上解决方案非常简单,只需在导航栏的不同部分之间切换顺序,请参阅 jsfiddle.net/gkorland/AMeYh/1jsfiddle.net/gkorland/AMeYh/2
    • 如果使用{less} 而不是纯CSS,我建议使用@screen-sm-min 变量而不是硬编码的768px
    • 这应该是答案
    • @TheHung,如果你有空间,一种可能性是jsfiddle.net/panchroma/q3940bs5 我敢肯定还会有一个更干净的 flexbox 选项。祝你好运;)
    【解决方案2】:

    要将 bootstrap 3 navbar-nav justify 菜单调整为 100% 宽度,您可以使用以下代码:

    @media (min-width: 768px){
        .navbar-nav {
            margin: 0 auto;
            display: table;
            table-layout: auto;
            float: none;
            width: 100%;
        }
        .navbar-nav>li {
            display: table-cell;
            float: none;
            text-align: center;
        }
    } 
    

    【讨论】:

    • 这是正确答案。它不仅以一切为中心,而且证明了一切。
    【解决方案3】:

    事实证明,默认情况下,所有navbar-nav&gt;li 元素都有一个float: left 属性,这就是为什么它们都向左移动的原因。一旦我添加了下面的代码,它就会使navbar 居中而不是皱缩。

    .navbar-nav>li {
            float: none;
    }
    

    希望这对希望将navbar 居中的其他人有所帮助。

    【讨论】:

    • 这会阻止 nav li 元素与引导程序 3 内联 - 大卫的回答效果更好。
    • 这会导致哪里出现问题?在我看来,这两个答案都很好(虽然我有偏见,因为我写了一个)但他们试图做不同的事情......看看我和大卫的 jsfiddles。
    • 好的,我可能错误地使用了您的代码来查看您的示例,但是您的问题是关于将导航栏居中而不是使其合理(完全不同),我会说大卫的答案更接近于此。
    【解决方案4】:

    这是一个更简单的解决方案。只需删除“navbar-nav”类并添加“nav-justified”。

    【讨论】:

      【解决方案5】:
      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
       <div class="container">
      <div class="navbar-header">
        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
          <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">
        <ul class="nav navbar-nav">
          <li><a href="#">Home</a></li>
          <li><a href="#about">About</a></li>
          <li><a href="#contact">Contact</a></li>  
        </ul>
      </div>
      

      对于css

      @media ( min-width: 768px ) { 
          .navbar > .container {
              text-align: center;
          }
          .navbar-header,.navbar-brand,.navbar .navbar-nav,.navbar .navbar-nav > li {
              float: none;
              display: inline-block;
          }
          .collapse.navbar-collapse {
              width: auto;
              clear: none;
          }
      }
      

      现场观看http://www.bootply.com/103172

      【讨论】:

        【解决方案6】:

        我知道这是一篇旧帖子,但我想分享我的解决方案。我花了几个小时试图制作一个合理的导航菜单。您实际上不需要修改 bootstrap css 中的任何内容。只需要在html中添加正确的类即可。

           <nav class="nav navbar-default navbar-fixed-top">
                <div class="navbar-header">
                    <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#collapsable-1" aria-expanded="false">
                        <span class="sr-only">Toggle navigation</span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </button>
                    <a class="navbar-brand" href="#top">Brand Name</a>
                </div>
                <div class="collapse navbar-collapse" id="collapsable-1">
                    <ul class="nav nav-justified">
                        <li><a href="#about-me">About Me</a></li>
                        <li><a href="#skills">Skills</a></li>
                        <li><a href="#projects">Projects</a></li>
                        <li><a href="#contact-me">Contact Me</a></li>
                    </ul>
                </div>
            </nav>
        

        当屏幕达到 768 像素时,此 CSS 代码将简单地删除 navbar-brand 类。

        media@(min-width: 768px){
           .navbar-brand{
                display: none;
            }
        }
        

        【讨论】:

          【解决方案7】:

          您好,您可以使用下面的代码来进行合理的导航

          <div class="navbar navbar-inverse">
              <ul class="navbar-nav nav nav-justified">
                  <li class="active"><a href="#">Inicio</a></li>
                  <li><a href="#">Item 1</a></li>
                  <li><a href="#">Item 2</a></li>
                  <li><a href="#">Item 3</a></li>
                  <li><a href="#">Item 4</a></li>
              </ul>
           </div>
          

          【讨论】:

            猜你喜欢
            • 2017-11-26
            • 1970-01-01
            • 1970-01-01
            • 2017-02-25
            • 2019-06-18
            • 1970-01-01
            • 2020-05-03
            • 2014-08-15
            • 2019-12-26
            相关资源
            最近更新 更多