Bootstrap 翻滚监听(Scrollspy)插件

翻滚监听(Scrollspy)插件,即自动更新导航插件,会依据翻滚条的方位自动更新对应的导航方针。其根本的实现是跟着您的翻滚,依据翻滚条的方位向导航栏增加 .active class。

如果您想要独自引证该插件的功用,那么您需求引证 scrollspy.js。或许,正如 Bootstrap 插件概览 一章中所说到,您能够引证 bootstrap.js 或压缩版的 bootstrap.min.js

用法

您能够向顶部导航增加翻滚监听行为:

  • 经过 data 特点:向您想要监听的元素(一般是 body)增加 data-spy="scroll"。然后增加带有 Bootstrap .nav 组件的父元素的 ID 或 class 的特点 data-target。为了它能正常作业,您有必要保证页面主体中有匹配您所要监听链接的 ID 的元素存在。
    <body data-spy="scroll" data-target=".navbar-example">
      ...
      <div class="navbar-example">
        <ul class="nav nav-tabs">
          ...
        </ul>
      </div>
      ...
    </body>
    
  • 经过 JavaScript:您能够经过 JavaScript 调用翻滚监听,选取要监听的元素,然后调用 .scrollspy() 函数:
    $('body').scrollspy({ target: '.navbar-example' })
    

实例

下面的实例演示了经过 data 特点运用翻滚监听(Scrollspy)插件:

<!DOCTYPE html>
<html>
<head>
   <title>Bootstrap 实例 - 翻滚监听(Scrollspy)插件</title>
   <link href="../bootstrap/css/bootstrap.min.css" rel="stylesheet">
   <script src="/scripts/jquery.min.js"></script>
   <script src="/bootstrap/js/bootstrap.min.js"></script>
</head>
<body>

<nav id="navbar-example" class="navbar navbar-default navbar-static" role="navigation">
   <div class="navbar-header">
      <button class="navbar-toggle" type="button" data-toggle="collapse" 
         data-target=".bs-js-navbar-scrollspy">
         <span class="sr-only">切换导航</span>
         <span class="icon-bar"></span>
         <span class="icon-bar"></span>
         <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">教程称号</a>
   </div>
   <div class="collapse navbar-collapse bs-js-navbar-scrollspy">
      <ul class="nav navbar-nav">
         <li><a href="#ios">iOS</a></li>
         <li><a href="#svn">SVN</a></li>
         <li class="dropdown">
            <a href="#" id="navbarDrop1" class="dropdown-toggle" 
               data-toggle="dropdown">Java
               <b class="caret"></b>
            </a>
            <ul class="dropdown-menu" role="menu" 
               aria-labelledby="navbarDrop1">
               <li><a href="#jmeter" tabindex="-1">jmeter</a></li>
               <li><a href="#ejb" tabindex="-1">ejb</a></li>
               <li class="divider"></li>
               <li><a href="#spring" tabindex="-1">spring</a></li>
            </ul>
         </li>
      </ul>
   </div>
</nav>
<div data-spy="scroll" data-target="#navbar-example" data-offset="0" 
   style="height:200px;overflow:auto; position: relative;">
   <h4 id="ios">iOS</h4>
   <p>iOS 是一个由苹果公司开发和发布的手机操作体系。开端是于 2007 年初次发布 iPhone、iPod Touch 和 Apple 
      TV。iOS 派生自 OS X,它们同享 Darwin 根底。OS X 操作体系是用在苹果manbet上,iOS 是苹果的移动版别。
   </p>
   <h4 id="svn">SVN</h4>
   <p>Apache Subversion,一般缩写为 SVN,是一款开源的版别操控体系软件。Subversion 由 CollabNet 公司在 2000 年创立。可是现在它现已发展为 Apache Software Foundation 的一个项目,因而具有丰厚的开发人员和用户社区。
   </p>
   <h4 id="jmeter">jMeter</h4>
   <p>jMeter 是一款开源的测验软件。它是 100% 纯 Java 应用程序,用于负载和功能测验。
   </p>
   <h4 id="ejb">EJB</h4>
   <p>Enterprise Java Beans(EJB)是一个创立高度可扩展性和强壮企业级应用程序的开发架构,布置在兼容应用程序服务器(比方 JBOSS、Web Logic 等)的 J2EE 上。
   </p>
   <h4 id="spring">Spring</h4>
   <p>Spring 结构是一个开源的 Java 渠道,为快速开发功用强壮的 Java 应用程序供给了齐备的根底设施支撑。
   </p>
   <p>Spring 结构开端是由 Rod Johnson 编写的,在 2003 年 6 月初次发布于 Apache 2.0 许可证下。
   </p>
</div>

</body>
</html>

成果如下所示:

翻滚监听(Scrollspy)插件

选项

经过 data 特点或 JavaScript 来传递。下表列出了这些选项:

选项称号类型/默认值Data 特点称号描绘
offsetnumber
默认值:10
data-offset当核算翻滚方位时,间隔顶部的偏移像素。

办法

.scrollspy('refresh'):当经过 JavaScript 调用 scrollspy 办法时,您需求调用 .refresh 办法来更新 DOM。这在 DOM 的恣意元素发作改变(即,您增加或移除了某些元素)时十分有用。下面是运用该办法的语法。

$('[data-spy="scroll"]').each(function () {
  var $spy = $(this).scrollspy('refresh')
})

实例

下面的实例演示了 .scrollspy('refresh') 办法的用法:

<!DOCTYPE html>
<html>
<head>
   <title>Bootstrap 实例 - 翻滚监听(Scrollspy)插件办法</title>
   <link href="../bootstrap/css/bootstrap.min.css" rel="stylesheet">
   <script src="/scripts/jquery.min.js"></script>
   <script src="/bootstrap/js/bootstrap.min.js"></script>
</head>
<body>

<nav id="myScrollspy" class="navbar navbar-default navbar-static" role="navigation">
   <div class="navbar-header">
      <button class="navbar-toggle" type="button" data-toggle="collapse" 
         data-target=".bs-js-navbar-scrollspy">
         <span class="sr-only">切换导航</span>
         <span class="icon-bar"></span>
         <span class="icon-bar"></span>
         <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">教程称号</a>
   </div>
   <div class="collapse navbar-collapse bs-js-navbar-scrollspy">
      <ul class="nav navbar-nav">
         <li class="active"><a href="#ios">iOS</a></li>
         <li><a href="#svn">SVN</a></li>
         <li class="dropdown">
            <a href="#" id="navbarDrop1" class="dropdown-toggle" 
               data-toggle="dropdown">Java 
               <b class="caret"></b>
            </a>
            <ul class="dropdown-menu" role="menu" 
               aria-labelledby="navbarDrop1">
               <li><a href="#jmeter" tabindex="-1">jmeter</a></li>
               <li><a href="#ejb" tabindex="-1">ejb</a></li>
               <li class="divider"></li>
               <li><a href="#spring" tabindex="-1">spring</a></li>
            </ul>
         </li>
      </ul>
   </div>
</nav>
<div data-spy="scroll" data-target="#myScrollspy" data-offset="0" 
   style="height:200px;overflow:auto; position: relative;">
   <div class="section">
      <h4 id="ios">iOS<small><a href="#" onclick="removeSection(this);">
         &times; 删去该部分</a></small>
      </h4>
      <p>iOS 是一个由苹果公司开发和发布的手机操作体系。开端是于 2007 年初次发布 iPhone、iPod Touch 和 Apple 
      TV。iOS 派生自 OS X,它们同享 Darwin 根底。OS X 操作体系是用在苹果manbet上,iOS 是苹果的移动版别。</p>
   </div>
   <div class="section">
      <h4 id="svn">SVN<small></small></h4>
      <p>Apache Subversion,一般缩写为 SVN,是一款开源的版别操控体系软件。Subversion 由 CollabNet 公司在 2000 年创立。可是现在它现已发展为 Apache Software Foundation 的一个项目,因而具有丰厚的开发人员和用户社区。</p>
   </div>
   <div class="section">
      <h4 id="jmeter">jMeter<small><a href="#" onclick="removeSection(this);">
      &times; 删去该部分</a></small>
      </h4>
      <p>jMeter 是一款开源的测验软件。它是 100% 纯 Java 应用程序,用于负载和功能测验。</p>
   </div>
   <div class="section">
      <h4 id="ejb">EJB</h4>
      <p>Enterprise Java Beans(EJB)是一个创立高度可扩展性和强壮企业级应用程序的开发架构,布置在兼容应用程序服务器(比方 JBOSS、Web Logic 等)的 J2EE 上。</p>
   </div>
   <div class="section">
      <h4 id="spring">Spring</h4>
      <p>Spring 结构是一个开源的 Java 渠道,为快速开发功用强壮的 Java 应用程序供给了齐备的根底设施支撑。</p>
      <p>Spring 结构开端是由 Rod Johnson 编写的,在 2003 年 6 月初次发布于 Apache 2.0 许可证下。</p>
   </div>
</div>
<script type="text/javascript">
   $(function(){
   removeSection = function(e) {
      $(e).parents(".section").remove();
      $('[data-spy="scroll"]').each(function () {
         var $spy = $(this).scrollspy('refresh')
      });
   }
   $("#myScrollspy").scrollspy();
});
</script>

</body>
</html>

成果如下所示:

翻滚监听(Scrollspy)插件办法

事情

下表列出了翻滚监听中要用到事情。这些事情可在函数中当钩子运用。

事情描绘实例
activate.bs.scrollspy每逢一个新项目被翻滚监听激活时,触发该事情。
$('#myScrollspy').on('activate.bs.scrollspy', function () {
  // 履行一些动作...
})

实例

下面的实例演示了 activate.bs.scrollspy 事情的用法:

<!DOCTYPE html>
<html>
<head>
   <title>Bootstrap 实例 - 翻滚监听(Scrollspy)插件事情</title>
   <link href="../bootstrap/css/bootstrap.min.css" rel="stylesheet">
   <script src="/scripts/jquery.min.js"></script>
   <script src="/bootstrap/js/bootstrap.min.js"></script>
</head>
<body>

<nav id="myScrollspy" class="navbar navbar-default navbar-static" role="navigation">
   <div class="navbar-header">
      <button class="navbar-toggle" type="button" data-toggle="collapse" 
         data-target=".bs-js-navbar-scrollspy">
         <span class="sr-only">切换导航</span>
         <span class="icon-bar"></span>
         <span class="icon-bar"></span>
         <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">教程称号</a>
   </div>
   <div class="collapse navbar-collapse bs-js-navbar-scrollspy">
      <ul class="nav navbar-nav">
         <li class="active"><a href="#ios">iOS</a></li>
         <li><a href="#svn">SVN</a></li>
         <li class="dropdown">
            <a href="#" id="navbarDrop1" class="dropdown-toggle" 
               data-toggle="dropdown">
               Java <b class="caret"></b>
            </a>
            <ul class="dropdown-menu" role="menu" 
               aria-labelledby="navbarDrop1">
               <li><a href="#jmeter" tabindex="-1">jmeter</a></li>
               <li><a href="#ejb" tabindex="-1">ejb</a></li>
               <li class="divider"></li>
               <li><a href="#spring" tabindex="-1">spring</a></li>
            </ul>
         </li>
      </ul>
   </div>
</nav>
<div data-spy="scroll" data-target="#myScrollspy" data-offset="0" 
   style="height:200px;overflow:auto; position: relative;">
   <div class="section">
      <h4 id="ios">iOS<small><a href="#" onclick="removeSection(this);">
         &times; 删去该部分</a></small>
      </h4>
      <p>iOS 是一个由苹果公司开发和发布的手机操作体系。开端是于 2007 年初次发布 iPhone、iPod Touch 和 Apple 
      TV。iOS 派生自 OS X,它们同享 Darwin 根底。OS X 操作体系是用在苹果manbet上,iOS 是苹果的移动版别。</p>
   </div>
   <div class="section">
      <h4 id="svn">SVN<small></small></h4>
      <p>Apache Subversion,一般缩写为 SVN,是一款开源的版别操控体系软件。Subversion 由 CollabNet 公司在 2000 年创立。可是现在它现已发展为 Apache Software Foundation 的一个项目,因而具有丰厚的开发人员和用户社区。</p>
   </div>
   <div class="section">
      <h4 id="jmeter">jMeter<small><a href="#" onclick="removeSection(this);">
         &times; 删去该部分</a></small>
      </h4>
      <p>jMeter 是一款开源的测验软件。它是 100% 纯 Java 应用程序,用于负载和功能测验。</p>
   </div>
   <div class="section">
      <h4 id="ejb">EJB</h4>
      <p>Enterprise Java Beans(EJB)是一个创立高度可扩展性和强壮企业级应用程序的开发架构,布置在兼容应用程序服务器(比方 JBOSS、Web Logic 等)的 J2EE 上。</p>
   </div>
   <div class="section">
      <h4 id="spring">Spring</h4>
      <p>Spring 结构是一个开源的 Java 渠道,为快速开发功用强壮的 Java 应用程序供给了齐备的根底设施支撑。</p>
      <p>Spring 结构开端是由 Rod Johnson 编写的,在 2003 年 6 月初次发布于 Apache 2.0 许可证下。</p>
   </div>
</div>
<span id="activeitem" style="color:red;"></span>
<script type="text/javascript">
   $(function(){
      removeSection = function(e) {
      $(e).parents(".section").remove();
      $('[data-spy="scroll"]').each(function () {
          var $spy = $(this).scrollspy('refresh')
      });
   }
   $("#myScrollspy").scrollspy();
   $('#myScrollspy').on('activate.bs.scrollspy', function () {
      var currentItem = $(".nav li.active > a").text();
      $("#activeitem").html("现在您正在检查 - " + currentItem);
   })
});
</script>

</body>
</html>

成果如下所示:

翻滚监听(Scrollspy)插件事情


更多实例

创立水平翻滚监听

以下实例演示了怎么创立水平翻滚监听:

实例

<!-- The navbar: used to jump to a section in the scrollable area -->
<nav class="navbar navbar-inverse navbar-fixed-top">
...
  <ul class="nav navbar-nav">
    <li><a href="#section1">Section 1</a></li>
    ...
</nav>

<!-- The scrollable area -->
<div data-spy="scroll" data-target=".navbar" data-offset="12">
  <!-- Section 1 -->
  <div id="section1">
    <h1>Section 1</h1>
    <p>Try to scroll this page and look at the navigation bar while scrolling!</p>
  </div>
  ...
</div>

测验一下 »

怎么创立笔直翻滚监听

以下实例演示了怎么创立笔直翻滚监听:

实例

<body data-spy="scroll" data-target="#myScrollspy" data-offset="20">

  <div class="container">
    <div class="row">
      <nav class="col-sm-3" id="myScrollspy">
        <ul class="nav nav-pills nav-stacked">
          <li><a href="#section1">Section 1</a></li>
          ...
        </ul>
      </nav>
      <div class="col-sm-9">
        <div id="section1">
          <h1>Section 1</h1>
          <p>Try to scroll this page and look at the navigation list while scrolling!</p>
        </div>
        ...
      </div>
    </div>
  </div>

</body>

测验一下 »