如何在Twitter Bootstrap中将导航下拉?

时间:2013-02-28 16:09:22

标签: html css twitter-bootstrap

我正在使用Twitter Bootstrap开发一个主题,我试图将下拉导航设为居中而不是左对齐。需要说明的是:我所说的是将整个下拉框相对于其父级居中,而不是将文本居中放在框内。

标记看起来像这样:

<ul id="nav" class="nav ww-nav pull-right hidden-phone">
  <li class="active"><a href="#">Words</a></li>
  <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Articles</a>
    <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
        <li><a href="#">Published</a></li>
        <li><a href="#">Categorized</a></li>
        <li><a href="#">Uncategorized</a></li>
        <li><a href="#">Award Winning</a></li>
    </ul>                   
  </li>
  <li><a href="#">About</a></li>
  <li><a href="#">Contact</a></li>
</ul>   

为了澄清我的意思,我会附上一个截图:

Bootstrap dropdown menu

注意:我正在寻找适用于不同父项的通用解决方案。由于它是一个主题,导航项可以是3个字符到20个字符宽的任何内容。不幸的是,X像素的简单边距并没有削减它。

PS:根据评论中的要求,我把整件事放在JSFiddle上: http://jsfiddle.net/zdCYX/4/

由于

2 个答案:

答案 0 :(得分:10)

我使用jQuery解决了这个问题,计算并调整了每个子菜单的左边距。

这样我的导航项目之间就有相同的空间。

document.onreadystatechange = function() {
    if (document.readyState === 'complete') {
        $("ul.ww-nav ul.dropdown-menu").each(function(){
            var parentWidth = $(this).parent().innerWidth();
            var menuWidth = $(this).innerWidth();
            var margin = (parentWidth / 2 ) - (menuWidth / 2);
            margin = margin + "px";
            $(this).css("margin-left", margin);
        });
    }
}

答案 1 :(得分:1)

Jsfiddle Demo in browser
您可以做的是将宽度设置为主nav元素而不是下拉:如下所示:

 .navbar .nav > li {

   width: 116px;
     }

.dropdown-menu {
      display:none;
      width:116px;
      min-width:116px;
      margin:0 auto;
  }

您必须更改以下代码对齐元素

.dropdown-menu > li > a {
         text-align:center;
}