在 rails 项目中使用 twitter bootstrap,我的目标是得到类似这样的东西(很好,很简单,并且很容易通过将下面的代码放入 jsfiddle 来证明我不会发疯!)。下面是一张相当 ascii 艺术图片,不幸的是我还不能发布图片:
menu1 menu2 my account
| item1 |
| item2 |
---------
HTML 看起来像这样
<div class="navbar">
<div class="navbar-inner">
<div class="container">
<ul class="nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Home</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
My Account
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><a href="#">Home</a></li>
<li><a href="#">Home</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div><!-- /.navbar -->
我将 Rails 3.2.13 与 bootstrap-sass 2.3.1.2 和 jquery-rails 2.2.1 gem 一起使用。我遇到的问题是,无论我做什么,下拉菜单都会水平呈现(并且在错误的位置)。(再次,请原谅我的 ascii 艺术 - 对不起!)
home home my account
[item1 item2]
我已经用谷歌搜索了,查看了整个堆栈交换,一直在挖掘萤火虫,看看是否有任何明显的我遗漏的东西,但没有快乐 - 有谁知道我正在使用的 gems 或 bootstrap 版本是否有问题(那是我猜是宝石暗示的)?或者对我可能遗漏的内容有什么建议?
如果它像一个错字,我正在使用的实际代码是:
<div class="masthead">
<div class="container">
<h3 class="muted pull-left">Page</h3>
<% if current_user %>
<p class="muted pull-right" style="margin-top:23px;">Logged in as: <%= current_user.email %></p>
<% else %>
<% end %>
</div>
<div class="navbar">
<div class="navbar-inner">
<div class="container">
<ul class="nav">
<li class="active"><%= link_to 'Home', root_path %></li>
<li><%= link_to 'Blog', posts_path %></li>
<li><%= link_to 'Demo', demo_path %></li>
<li><%= link_to 'About', about_path %></li>
<li><%= link_to 'Contact', contact_path %></li>
<% if current_user %>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
My Account
<b class="caret"></b>
</a>
<ul class="pull-right dropdown-menu">
<li><%= link_to 'Personal Details', demo_path %></li>
<li><%= link_to 'Payment History', about_path %></li>
<li><%= link_to 'Account Settings', about_path %></li>
<li><%= link_to "Log out", log_out_path %></li>
</ul>
</li>
<% else %>
<li><%= link_to "Sign up", sign_up_path %></li>
<li><%= link_to "Log in", log_in_path %></li>
<% end %>
</ul>
</div>
</div>
</div><!-- /.navbar -->
</div>
导航的唯一 css 覆盖内容如下所示:
.navbar .navbar-inner {
padding: 0;
}
.navbar .nav {
margin: 0;
display: table;
width: 100%;
}
.navbar .nav li {
display: table-cell;
width: 1%;
float: none;
}
.navbar .nav li a {
font-weight: bold;
text-align: center;
border-left: 1px solid rgba(255,255,255,.75);
border-right: 1px solid rgba(0,0,0,.1);
}
.navbar .nav li:first-child a {
border-left: 0;
border-radius: 3px 0 0 3px;
}
.navbar .nav li:last-child a {
border-right: 0;
border-radius: 0 3px 3px 0;
}
页面中包含的内容如下:
<link href="/assets/application.css?body=1" media="all" rel="stylesheet" type="text/css" />
<link href="/assets/bootstrap_and_overrides.css?body=1" media="all" rel="stylesheet" type="text/css" />
<link href="/assets/comments.css?body=1" media="all" rel="stylesheet" type="text/css" />
<link href="/assets/home.css?body=1" media="all" rel="stylesheet" type="text/css" />
<link href="/assets/posts.css?body=1" media="all" rel="stylesheet" type="text/css" />
<link href="/assets/scaffolds.css?body=1" media="all" rel="stylesheet" type="text/css" />
<link href="/assets/sessions.css?body=1" media="all" rel="stylesheet" type="text/css" />
<link href="/assets/users.css?body=1" media="all" rel="stylesheet" type="text/css" />
<script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-transition.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-affix.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-alert.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-button.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-carousel.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-collapse.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-dropdown.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-modal.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-scrollspy.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-tab.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-tooltip.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-popover.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-typeahead.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap.js?body=1" type="text/javascript"></script>
<script src="/assets/comments.js?body=1" type="text/javascript"></script>
<script src="/assets/home.js?body=1" type="text/javascript"></script>
<script src="/assets/posts.js?body=1" type="text/javascript"></script>
<script src="/assets/sessions.js?body=1" type="text/javascript"></script>
<script src="/assets/users.js?body=1" type="text/javascript"></script>
<script src="/assets/application.js?body=1" type="text/javascript"></script>
如果有帮助,我们非常乐意提供其他信息 - 谢谢。
更新感谢大卫,我已将其范围缩小到:
.navbar .nav li {
display: table-cell;
width: 1%;
float: none;
}
具体来说
display: table-cell;
用于均匀分布菜单项。如果我把它拿出来,菜单将垂直渲染,但是引导布局会变得混乱 - 在这一点上我真的不知道为什么。有谁知道(甚至更好,如何解决它)?谢谢你。
我没有要测试的 Chrome,但不仅仅是 Firefox,我在 Safari 中遇到了同样的问题。