【问题标题】:Twitter Bootstrap V 3.0 dynamically centering navigationTwitter Bootstrap V 3.0 动态居中导航
【发布时间】:2013-12-20 02:54:23
【问题描述】:

使用引导程序 v3.0

我喜欢动态居中导航栏。即不硬编码宽度的修复。

这是如何实现的?下面是删除了多余标签的标准导航代码示例。

<!-- NAVBAR
================================================== -->
    <div class="navbar-wrapper">
        <div class="navbar navbar-inverse navbar-static-top">
            <div class="container">
                <div class="navbar-header">
                    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                    <span class="icon-bar"></span>
                    </button>
                    <a class="navbar-brand" href="#">All Saints Church, Ripley.</a>
                </div>
                <div class="navbar-collapse collapse" >
                    <ul class="nav navbar-nav">
                        <li class="active"><a href="#">Home</a></li>
                        <li><a href="#about">About</a></li>
                        <li><a href="#contact">Contact</a></li>
                    </ul>
                </div>
            </div>
        </div>
    </div>
<!-- ./NAVBAR -->

文档状态浮动导航栏右插入 .navbar-right @&lt;ul class="nav navbar-nav navbar-right"&gt; ... 此处显示http://getbootstrap.com/components/#navbar-component-alignment

遵循此问题的方法:twitter bootstrap -- center brand in nav bar 我无法使用 margin-left: auto 集中导航;和margin-right: auto;

非常感谢任何帮助。

【问题讨论】:

  • 您想将所有导航栏链接、整个导航栏或只是brand居中?
  • 我想知道如何将整个导航栏居中,但在这种情况下,我只想将导航栏链接居中。

标签: html css twitter-bootstrap twitter-bootstrap-3


【解决方案1】:

郑重声明,我不太喜欢这个解决方案 =) 但是一种蛮力的方法可能是添加以下 CSS:

.nav.navbar-nav {
    float: none;
    margin-left: auto;
    margin-right: auto;
}

以及以下 jQuery 强制从继承自 .containerauto 减小宽度:

var width = 0, $navbarLinks = $(".nav.navbar-nav");

$navbarLinks.children().each( function(idx) {
    width += $(this).outerWidth();
});

$navbarLinks.width(width);

请参阅jsFiddle 进行测试。

【讨论】:

  • 这很好用@lebolo - 谢谢:D 唯一的问题,在移动设备上,它会导致克拉被放置在下拉菜单下,并导致“活动”突出显示不完全跨越活动元素。
【解决方案2】:

我发现为此目的使用 nav-justified 类是最简单的方法。

<nav class="navbar navbar-default" role="navigation">
  <div class="navbar-header">
    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
    </button>    
  </div>
  <div class="navbar-collapse collapse">
    <ul class="nav nav-justified">
      <li class="active"><a href="#">Home</a></li>
      <li><a href="#">Projects</a></li>
      <li><a href="#">Services</a></li>
      <li><a href="#">Downloads</a></li>
      <li><a href="#">About</a></li>
      <li><a href="#">Contact</a></li>
    </ul>
  </div>
</nav>

Demo

您还可以使用额外的类来限制宽度。请参阅演示中的第二个导航栏。

【讨论】:

  • 太棒了。这正是我所要求的,非常感谢@Skelly。与代码中没有 navbar-nav 的权衡使得该解决方案对我自己来说站不住脚。我筛选了 CSS 并发现:.navbar-nav &gt; li &gt; .dropdown-menu { margin-top: 0; border-top-right-radius: 0; border-top-left-radius: 0; }.navbar-nav.pull-right &gt; li &gt; .dropdown-menu, .navbar-nav &gt; li &gt; .dropdown-menu.pull-right { right: 0; left: auto; } .navbar-collapse .navbar-nav.navbar-left:first-child { margin-left: -15px; }` 似乎是唯一的定位 css 样式。
  • 我从 bootstrap.css 获得的所有上述 css 样式。我试图理解为什么我不能保留颜色、填充、边距设置并删除任何可能影响定位的样式。到目前为止,我尝试过的一切都一团糟。
  • 是的,似乎 BS 类是针对左/右导航链接的,但不是居中链接。我不知道为什么。
  • 一定是他们选择暂时离开的问题。我不认为这是一个疏忽,他们也没有预料到人们想要居中的导航栏链接。
猜你喜欢
  • 2012-06-11
  • 1970-01-01
  • 1970-01-01
  • 2013-10-17
  • 2013-08-25
  • 1970-01-01
  • 1970-01-01
  • 2013-01-07
  • 2013-08-08
相关资源
最近更新 更多