我正在使用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>
为了澄清我的意思,我会附上一个截图:
注意:我正在寻找适用于不同父项的通用解决方案。由于它是一个主题,导航项可以是3个字符到20个字符宽的任何内容。不幸的是,X像素的简单边距并没有削减它。
PS:根据评论中的要求,我把整件事放在JSFiddle上: http://jsfiddle.net/zdCYX/4/
由于
答案 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;
}