【问题标题】:twitter bootstrap: How to span links in the navbar?twitter bootstrap:如何跨越导航栏中的链接?
【发布时间】:2012-08-04 19:31:30
【问题描述】:

我尝试了几个选项,但我无法让 4 个链接跨越导航栏。我认为将span3 类添加到每个<li> 会很容易。 这是我的 HTML:

    <div class="navbar center">
      <div class="navbar-inner">
        <div class="container row">
            <ul class="nav span12">
              <li class="active span3">
                <a href="#">Home</a>
              </li>
              <li class="span3"><a href="#">Link</a></li>
              <li class="span3"><a href="#">Link</a></li>
              <li class="span3"><a href="#">Link</a></li>
            </ul>
        </div>
      </div>
    </div>

为了使链接居中,我使用了此处描述的解决方案:Modify twitter bootstrap navbar

这是 CSS:

.navbar-inner { 
  -webkit-border-radius: 0;
  -moz-border-radius: 0;
  border-radius: 0;
}

.center.navbar .nav,
.center.navbar .nav > li {
    float:none;
    display:inline-block;
    *display:inline; /* ie7 fix */
    *zoom:1; /* hasLayout ie7 trigger */
    vertical-align: top;
}

.center .navbar-inner {
    text-align:center;
}

我设法得到的是: 我怎样才能让这四个链接跨在同一行上?

【问题讨论】:

    标签: css twitter-bootstrap navbar


    【解决方案1】:

    你做了一个好的开始,但你的标记没有反映真正的网格:

    • 您不要将.spanX 放入.span12
    • .container.row 可能有冲突的属性

    它似乎适用于这个:

    <div class="navbar center">
      <div class="navbar-inner">
        <div class="container">
            <div class="row">
                <ul class="nav">
                  <li class="active span3">
                    <a href="#">Home</a>
                  </li>
                  <li class="span3"><a href="#">Link</a></li>
                  <li class="span3"><a href="#">Link</a></li>
                  <li class="span3"><a href="#">Link</a></li>
                </ul>
            </div>
        </div>
      </div>
    </div>
    

    Demo (jsfiddle)fullscreen

    【讨论】:

      【解决方案2】:

      使用spanX 并不是最好的解决方案(除非您使用的是 bootstrap-resonsive.css,请参见下文)。您可以使用百分比,只要您愿意在导航栏中的项目数发生变化时修改您的 CSS。

      您可以使用默认导航栏标记来实现这一点:

      <div class="navbar">
          <div class="navbar-inner">
              <div class="container">
                  <ul class="nav">
                      <li><a href="#">Home</a></li>
                      <li><a href="#">Link</a></li>
                      <li><a href="#">Link</a></li>
                  </ul>
              </div>
          </div>
      </div>
      

      还有两个 CSS 规则。第一个删除 &lt;ul class="nav"&gt; 上的边距,删除浮动并将其宽度设置为其容器的 100%(在本例中,&lt;div class="container"&gt; 内的 &lt;div class="navbar-inner"&gt;

      第二条规则将每个&lt;li&gt; 的宽度设置为&lt;ul&gt; 宽度的一定百分比。如果您有四个项目,则将其设置为25%。如果你有五个,那就是20%,依此类推。

      .navbar-inner ul.nav {
        margin-right: 0;
        float: none;
        width: 100%;
      }
      .navbar-inner ul.nav li {
        width: 33%;
        text-align: center;
      }
      

      jsFiddle DEMO

      更新

      如果您使用的是响应式引导 CSS,您可以使用内置的 spanX 类,如下所示:

      <div class="navbar">
          <div class="navbar-inner">
              <div class="container">
                  <ul class="nav row-fluid">
                      <li class="span4"><a href="#">Home</a></li>
                      <li class="span4"><a href="#">Link</a></li>
                      <li class="span4"><a href="#">Link</a></li>
                  </ul>
              </div>
          </div>
      </div>
      

      那么,你需要的所有 CSS 就是:

      .navbar-inner ul.nav li {
          text-align: center;
      }
      

      jsFiddle DEMO

      【讨论】:

      • @pef 虽然它可以工作,但您不需要像那样固定宽度。即使使用流体网格。检查我的答案。并且 responsive != fluid :您可以使用 .row-fluid 而不使用响应部分。
      • @Sherbrow 是的,但我没能用 .spanX 对其进行排序,所以我选择了宽度解决方案,尤其是因为在我的情况下,它在移动视图中具有更好的行为。感谢您的解决方案,我也投了赞成票。
      猜你喜欢
      • 2012-08-02
      • 2013-08-08
      • 2013-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多