javascript - Bootstrap ScrollSpy 无法工作

标签 javascript jquery html css twitter-bootstrap

正在测试一些 Bootstrap 代码,但无法使 Scrollspy 功能正常工作。

这是我的代码:

.box {
  border:1px solid grey;
  background-color:#d3d3d3;
}
.large {
  font-size:3000%;
  color:red;
}

#div1 { background-color: blue; }
#div2 { background-color: red;  }
#div3 { background-color: green;}

.contentDiv {
  height:800px;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>

<body data-spy="scroll" data-target=".collapse">
  <div class="navbar navbar-default navbar-fixed-top">
    <div class="container">
      <div class="navbar-header">
        <a href="" class="navbar-brand">My Website</a>
        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
          <span class="sr-only">Toggle navigation</span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
      </div>

      <div class="collapse navbar-collapse">
        <ul class="nav navbar-nav">
          <li class="active"><a href="#div1">Page 1</a></li>
          <li><a href="#div2">Page 2</a></li>
          <li><a href="#div3">Page 3</a></li>
        </ul>
      </div>
    </div>
  </div>

  <hr>

  <h1>Hello, world!</h1>

  <div class="container">
    <div id="div1" class="contentDiv">Content1</div><hr>
    <div id="div2" class="contentDiv">Content2</div><hr>
    <div id="div3" class="contentDiv">Content3</div><hr>
  </div>

</body>

我遇到的两个问题:

  1. “第 3 页”在首次加载页面时突出显示,但“第 1 页”应该突出显示
  2. 当我滚动页面时,ScrollSpy 不工作。

但是,它似乎适用于 jsFiddle。

最佳答案

您应该将 body(或您正在监视的元素)的 position 设置为 relative。添加以下 CSS 规则

body
{
    position: relative;
}

根据documentation ,这是必要的。

<!DOCTYPE html>
<html>
    <head>
    <script type='text/javascript' src='http://code.jquery.com/jquery-1.9.1.js'></script>
    <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
    <script type='text/javascript' src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
    <style type='text/css'>
        body {position:relative;}
        .box {border:1px solid grey;background-color:#d3d3d3;}
        .large {font-size:3000%;color:red;}
        #div1 {background-color:blue;}
        #div2 {background-color:red;}
        #div3 {background-color:green;}
        .contentDiv {height:800px;}
    </style>
</head>
<body data-spy="scroll" data-target=".collapse">
    <div class="navbar navbar-default navbar-fixed-top">
        <div class="container">
            <div class="navbar-header"> <a href="" class="navbar-brand">My Website</a>
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
            </div>
            <div class="collapse navbar-collapse">
                <ul class="nav navbar-nav">
                    <li class="active"><a href="#div1">Page 1</a></li>
                    <li><a href="#div2">Page 2</a></li>
                    <li><a href="#div3">Page 3</a></li>
                </ul>
            </div>
        </div>
    </div>
    <hr>

    <h1>Hello, world!</h1>

    <div class="container">
        <div id="div1" class="contentDiv">Content1</div>
        <hr>
        <div id="div2" class="contentDiv">Content2</div>
        <hr>
        <div id="div3" class="contentDiv">Content3</div>
        <hr>
    </div>  
</body>
</html>

fiddle 是 here

关于javascript - Bootstrap ScrollSpy 无法工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30417873/

相关文章:

php - 当前时间错误 - php时间函数

javascript - 防止窗口关闭

javascript - 为什么 019 不是 JavaScript 语法错误?或者为什么 019 > 020

javascript - API应用程序需要 session 吗?

javascript - 滚动效果与背景图像修复

javascript - 在 JavaScript 中验证 JSON 文件

javascript - JQuery:如果div可见

html - 无法使用 CSS 设置图像属性

javascript - Backbone Paginator Collection 在重置时不触发渲染

javascript - 使用 jQuery 和 Ajax 访问 JSON 文件