Bootstrap导航栏折叠不起作用。

4
我找不到原因,为什么在尝试使用Bootstrap的导航栏按钮时它无法正常工作。我认为这可能与我的页面加载jQuery库相关,但我并不确定。
以下是我的代码。我将只展示头部和导航栏部分,因为我相信问题出现在这里。其余部分都是简单的HTML结构:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta charset="UTF-8">
    <meta name="viewport" content="initial-scale=1">
    <!--Boostrap jQuery-->
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjsmfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
        crossorigin="anonymous"></script>
    <!--Boostrap-->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
        crossorigin="anonymous">
    <!--Favicon-->
    <link rel="icon" type="image/png" href="media/favicon-32x32.png" sizes="32x32" />
    <!--Mi CSS-->
    <link rel="stylesheet" type="text/css" href="index.css">

    <!-- p5.js-->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.2/p5.min.js"></script>
    <script src="js/sketch.js" type="text/javascript"></script>

    <title>Festival Sonorum</title>
</head>

<body>
    <!-- navbar -->
    <nav class="navbar navbar-default navbar-fixed-top">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false"
                    aria-controls="navbar">
            <span class="sr-only">Navegación</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
                <a class="navbar-brand" href="index.html">Festival Sonorum</a>
            </div>
            <div id="navbar" class="navbar-collapse collapse">
                <ul class="nav navbar-nav">
                    <li><a href="programa.html">Programa</a></li>
                    <li><a href="#acerca">Acerca</a></li>
                    <li><a href="#contacto">Contacto</a></li>
                    <li><a href="#galeria">Galería</a></li>
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Artistas <span class="caret"></span></a>
                        <ul class="dropdown-menu">
                            <li><a href="#">Action</a></li>
                            <li><a href="#">Another action</a></li>
                            <li><a href="#">Something else here</a></li>
                            <li role="separator" class="divider"></li>
                            <li class="dropdown-header">Nav header</li>
                            <li><a href="#">Separated link</a></li>
                            <li><a href="#">One more separated link</a></li>
                        </ul>
                    </li>
                </ul>
            </div>
            <!--/.nav-collapse -->
        </div>
    </nav>
    <!--fin del navbar-->

我有点不明白。我是否需要加载一个库?

嗨@dawn :) 如果您发现我的回答有用,请接受并投票赞成 - Dan Mindru
2个回答

7

Bootstrap不包括jQuery,所以您需要自己添加jQuery才能使它工作。将其添加到bootstrap.js脚本之前。

根据Bootstrap文档

需要jQuery

请注意,所有JavaScript插件都需要包含jQuery,如起始模板所示。请参阅我们的bower.json以查看支持哪些版本的jQuery。

此外,您的bootstrap.min.js脚本的完整性检查失败。为使其正常工作,您需要修复它并添加至少版本1.9.0的jQuery:

...
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="   crossorigin="anonymous"></script>

<!--Boostrap jQuery-->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
...

1
嗨@dawn,显然bootstrap.min.js未通过CDN完整性检查,因此无法加载。我更新了答案并替换了< script>标签,您也可以将其替换掉,然后就可以使用了。在这里working here - Dan Mindru
1
如果下次有疑问,打开控制台(在 Chrome 上是 Ctrl + Shift + J 适用于 Windows 或 Cmd + Opt + J 适用于 Mac,不同的浏览器可能不同)并查看输出。 在这种情况下,我可以看到错误信息:Failed to find a valid digest in the 'integrity' attribute for resource 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js' with computed SHA-256 integrity 'U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8='. The resource has been blocked. - Dan Mindru

0

您应该检查头部区域的bootstrap.css文件,将jquery.js放在body结束标签之前,并且应该给被切换导航菜单赋予与按钮data-target相同的id。

<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarToggleExternalContent" aria-expanded="false" aria-label="Toggle navigation">  
  <span class="navbar-toggler-icon"></span>
</button>
     <div class="collapse navbar-collapse" id="navbarResponsive">

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