导航栏在使用Bootstrap时不能折叠

6

我有一个用Twitter Bootstrap制作的网站。在大屏幕上,导航栏外观与预期相符,但如果您在手机上查看相同的导航栏,则导航栏不会折叠。

这是我的代码:

<div class="container">
  <div class="masthead">
    <div class="navbar">
      <div class="navbar-inner">
        <div class="container">
          <ul class="nav">
            <li class="active"><a href="/" class="">Home</a></li>
            <li><a href="goud-zilver.html">Oud goud en zilver</a></li>
            <li><a href="koersen.html">Officiële koersen</a></li>
            <li><a href="webshop/" target="_blank">Webwinkel</a></li>
            <li><a href="diversen.html">Diversen</a></li>
            <li><a href="contact.php">Contact</a></li>
          </ul>
        </div>
      </div>
    </div><!-- /.navbar -->
  </div>

在第三个课程中,我也尝试使用nav-collapse,但是在大屏幕上它也被折叠了。

6个回答

8

请按照Betty St的指示操作(包括响应式css、bootstrap-collapse.js和Transitions插件更新:(bootstrap-transition.js) 和jQuery)。您需要添加一个按钮/链接来触发折叠。这些标签具有属性:data-toggle="collapse" data-target=".nav-collapse",其中data-target可以是任何css选择器。将您的导航放置在data-target下选择的标记之间,例如:http://bootply.com/62921

html

<div class="container">
      <div class="masthead">
        <div class="navbar">
          <div class="navbar-inner">
            <div class="container">
          <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </a>

          <div class="nav-collapse">
              <ul class="nav">
                <li class="active"><a href="/" class="">Home</a></li>
                <li><a href="goud-zilver.html">Oud goud en zilver</a></li>
                <li><a href="koersen.html">Officiële koersen</a></li>
                <li><a href="webshop/" target="_blank">Webwinkel</a></li>
                <li><a href="diversen.html">Diversen</a></li>
                <li><a href="contact.php">Contact</a></li>
              </ul>
              </div>  
            </div>
          </div>
        </div><!-- /.navbar -->
      </div>
</div>

更新 您的代码缺少Collapse插件所需的Transitions插件(bootstrap-transition.js)。更重要的是,您没有包含jQuery。 现在它应该可以工作了,请参见:http://plnkr.co/l66QqCftGNsaG0xkBrUf

Javascript包括:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>   
<script type="text/javascript" src="http://twitter.github.io/bootstrap/assets/js/bootstrap-transition.js"></script>
<script type="text/javascript" src="http://twitter.github.io/bootstrap/assets/js/bootstrap-collapse.js"></script>

注意:考虑包含编译(或压缩)完整JavaScript的版本:
<script src="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/js/bootstrap.min.js"></script>  

你需要在折叠后改变样式:

折叠后还需更改样式:

.navbar .in .nav li {
   display: block;
   float: none;
   width:100%;
}

我现在使用了第一个响应中包含的2个文件,运行了这段代码。现在导航栏可以正常折叠了,但是如果我按按钮,它没有任何反应。 - user1675567
bootply正常工作。能否给我完整的代码?页面上可能还有JavaScript错误。 - Bass Jobsen
好的,这是页面的完整代码:查看源代码:http://goud-diamantbank.info/contact.php在浏览器中粘贴并包含“view-source”。 - user1675567
尝试缩短网站加载时间时,我不小心删除了折叠导航栏所需的引导依赖项。看起来是使用在线压缩器导致了这个问题... - Pfinnn

7

我曾经遇到过类似的问题。当我在手机上查看网站时,我的导航栏完全没有折叠。最终,我发现我漏掉了以下meta标签。

<meta name="viewport" content="width=device-width, user-scalable=false;">

这个标签可以解决这个问题。


1
该死!这对我起作用了。老实说,它让我困惑了几天。一个不错的干净解决方案。你能否详细解释一下为什么这个方法有效或者给我指点一些文档?没有压力。 - Wachaga Mwaura
这对我没有解决问题,有什么建议吗? - Ryan Pelletier

5

1
  1. 您需要拥有已编译的bootstrap.js或bootstrap.min.js(编译版本),并且勾选了折叠和过渡效果才能进行编译。
  2. 给你的父级div一个id。如果它已经有一个,请记下它的名字。您的父级div将成为其直接子元素组成的下拉菜单[链接、按钮等]。
  3. 在我们之前提到的父级div每个子元素中添加data-toggledata-target
    假设父级div的ID是id="my_parent_div",则每个子元素都应在链接属性中添加data-toggle="collapse" data-target="#my_parent_div"

这里是固定导航栏代码的示例:

<div class="collapse navbar-collapse" id="example-navbar-collapse">
      <ul class="nav navbar-nav">
        <li><a href="#book"  data-toggle="collapse" data-target="#example-navbar-collapse">Book a Room!</a></li>
        <li class="divider"></li>
        <li><a href="#services" data-toggle="collapse" data-target="#example-navbar-collapse">Services</a></li>
        <li><a href="#packages" data-toggle="collapse" data-target="#example-navbar-collapse">Packages</a></li>
        <li><a href="#contacts" data-toggle="collapse" data-target="#example-navbar-collapse">Location</a></li>
      </ul>
    </div>

希望这有所帮助 :)

我尝试过这个方法,但它会在Angular 4中完全破坏导航。 - irhetoric

1
我遇到了相同的问题,发现我重复加载了jQuery,并且将jQuery加载到了页脚,在bootstrap之后。页面上除了折叠以外,其他都正常工作。我回到基础知识,解决了这个问题。先加载jQuery,然后再加载bootstrap,并确保没有其他随机包含页面也在加载jQuery。这与bootstrap 4导航元素有关。

1
将 jQuery 放在 bootstrap 之前对我很有效。这是有道理的,因为 bootstrap 使用了 jQuery。 - I.Stanev
在我的情况下,我加载了bootstrap.min.js两次。 - cipnt

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接