导航栏中的 Bootstrap 3.0 按钮
Posted
技术标签:
【中文标题】导航栏中的 Bootstrap 3.0 按钮【英文标题】:Bootstrap 3.0 Button in Navbar 【发布时间】:2013-09-17 23:46:39 【问题描述】:我现在升级了 bootstrap 3.0。并且看起来像 btn 的“a”标签(在 .btn 类的帮助下)在导航栏上被破坏了。
<li>
<a href="<?php echo BASE_PATH; ?>register.php" class="btn btn-primary btn-sm">
<?php echo "<strong>" . _('Bayilik Başvurusu') . "</strong>"; ?>
</a>
</li>
但它无法正常工作。我认为 Bootstrap 改变了系统。
【问题讨论】:
您真的应该看看文档的 Bootstrap 2 到 3 迁移部分。它列出了所有已更改或删除的类以及在它们的位置使用什么。 getbootstrap.com/getting-started/#migration 【参考方案1】:现在,bootstrap 3 在导航栏中有如下按钮:
<button type="button" class="btn btn-default navbar-btn">Sign in</button>
它使用navbar-btn
,所以它知道它在导航栏中。
如果你想让它工作,这样做:
<li>
<form action="#">
<button class="btn btn-default navbar-btn">Link</button>
</form>
</li>
这样,它仍然像一个锚标记。只需将 #
更改为您实际希望它达到的值。
所以对于这个例子:
<li>
<form action="<?php echo BASE_PATH; ?>register.php">
<button class="btn btn-default navbar-btn">Link</button>
</form>
</li>
【讨论】:
怎么样? Link 在此之前。 不幸的是,如果它指向的路径是/app
,那么结果url是/app?
(注意额外的问号)。【参考方案2】:
使用 bootstrap 3,仍然可以将 <a>
link 呈现为按钮,但您必须将它们包含在 <form>
中。此外,<a>
应包含 navbar-btn
类。
<li>
<form>
<a href="#" class="btn btn-primary btn-sm navbar-btn">
register
</a>
</form>
</li>
【讨论】:
感谢您的提示。实际上我发现<div>
也可以工作,而不是<form>
这不是语义的。关键是不要让a
成为<li>
的直接子代。
但是,当您执行此操作时,悬停是否搞砸了?按钮的背景对我来说是透明的。
解决方案对我有用。遗憾的是,这在框架中得到了原生支持,我也在 Github 上看到了很多关于它的讨论,并且不认为他们有任何计划让链接按钮原生工作,这对我来说似乎是一个糟糕的选择。
【参考方案3】:
问题在于,用于在导航栏中设置锚点样式的选择器是:.nav > li > a
,这意味着它的优先级高于 .navbar-btn。
您可以通过将其包装在另一个标签(如跨度)中来修复。我认为您不应该像其他人建议的那样使用表单标签,因为它根本不是表单。
【讨论】:
绝对是最佳答案。【参考方案4】:将<p class="navbar-btn">
包裹在<a class="btn">
周围:
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container">
<ul class="nav navbar-nav">
<li>
<p class="navbar-btn">
<a href="#" class="btn btn-default">I'm a link button!</a>
</p>
</li>
</ul>
</div>
</nav>
JSFiddle:http://jsfiddle.net/lachlan/398kj/
截图:
【讨论】:
谢谢,效果很好,我更喜欢你的解决方案,因为你仍然可以使用 警告:折叠版本看起来不太好。其他链接是块(即全角是可点击的)。如果您使用btn-block
,它会将文本居中对齐,因此不会匹配其他链接。【参考方案5】:
http://learnangular2.com/events/
事件对象
要捕获事件对象,请在模板的事件回调中将 $event 作为参数传递:
<button (click)="clicked($event)"></button>
这是修改事件的简便方法,例如调用 preventDefault:
@Component(...)
class MyComponent
clicked(event)
event.preventDefault();
【讨论】:
这……嗯。什么?以上是关于导航栏中的 Bootstrap 3.0 按钮的主要内容,如果未能解决你的问题,请参考以下文章