导航栏中的 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 在导航栏中有如下按钮:

&lt;button type="button" class="btn btn-default navbar-btn"&gt;Sign in&lt;/button&gt;

它使用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,仍然可以将 &lt;a&gt;link 呈现为按钮,但您必须将它们包含在 &lt;form&gt; 中。此外,&lt;a&gt; 应包含 navbar-btn 类。

<li>
  <form>
    <a href="#" class="btn btn-primary btn-sm navbar-btn">
      register
    </a>
  </form>
</li>

【讨论】:

感谢您的提示。实际上我发现&lt;div&gt; 也可以工作,而不是&lt;form&gt; 这不是语义的。关键是不要让a 成为&lt;li&gt; 的直接子代。 但是,当您执行此操作时,悬停是否搞砸了?按钮的背景对我来说是透明的。 解决方案对我有用。遗憾的是,这在框架中得到了原生支持,我也在 Github 上看到了很多关于它的讨论,并且不认为他们有任何计划让链接按钮原生工作,这对我来说似乎是一个糟糕的选择。 【参考方案3】:

问题在于,用于在导航栏中设置锚点样式的选择器是:.nav &gt; li &gt; a,这意味着它的优先级高于 .navbar-btn。

您可以通过将其包装在另一个标签(如跨度)中来修复。我认为您不应该像其他人建议的那样使用表单标签,因为它根本不是表单。

【讨论】:

绝对是最佳答案。【参考方案4】:

&lt;p class="navbar-btn"&gt; 包裹在&lt;a class="btn"&gt; 周围:

<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 按钮的主要内容,如果未能解决你的问题,请参考以下文章

切换按钮折叠在 Bootstrap 导航栏中不起作用

使 Bootstrap 3.0 NavBar 内容始终折叠

导航栏中的 Twitter Bootstrap 搜索框在 chrome 和 firefox 中呈现不同

Bootstrap 3 的活动按钮

Wordpress 导航栏中的自定义简码

Bootstrap 3.0 响应式菜单栏切换问题..当增加菜单栏中的内容时