学IT网-在线学习IT知识

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: html css js php
查看: 472|回复: 0

Bootstrap 滚动监听(Scrollspy)插件

[复制链接]
发表于 2017-7-28 21:46:17 | 显示全部楼层 |阅读模式
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 的元素存在。
    1. <body data-spy="scroll" data-target=".navbar-example">
    2.   ...
    3.   <div class="navbar-example">
    4.     <ul class="nav nav-tabs">
    5.       ...
    6.     </ul>
    7.   </div>
    8.   ...
    9. </body>
    复制代码

  • 通过 JavaScript:您可以通过 JavaScript 调用滚动监听,选取要监听的元素,然后调用 .scrollspy()函数:
    1. $('body').scrollspy({ target: '.navbar-example' })
    复制代码

实例
下面的实例演示了通过 data 属性使用滚动监听(Scrollspy)插件:
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.    <title>Bootstrap 实例 - 滚动监听(Scrollspy)插件</title>
  5.    <link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet">
  6.    <script src="/scripts/jquery.min.js"></script>
  7.    <script src="/bootstrap/js/bootstrap.min.js"></script>
  8. </head>
  9. <body>

  10. <nav id="navbar-example" class="navbar navbar-default navbar-static" role="navigation">
  11.    <div class="navbar-header">
  12.       <button class="navbar-toggle" type="button" data-toggle="collapse"           data-target=".bs-js-navbar-scrollspy">
  13.          <span class="sr-only">切换导航</span>
  14.          <span class="icon-bar"></span>
  15.          <span class="icon-bar"></span>
  16.          <span class="icon-bar"></span>
  17.       </button>
  18.       <a class="navbar-brand" href="#">教程名称</a>
  19.    </div>
  20.    <div class="collapse navbar-collapse bs-js-navbar-scrollspy">
  21.       <ul class="nav navbar-nav">
  22.          <li><a href="#ios">iOS</a></li>
  23.          <li><a href="#svn">SVN</a></li>
  24.          <li class="dropdown">
  25.             <a href="#" id="navbarDrop1" class="dropdown-toggle"                 data-toggle="dropdown">Java
  26.                <b class="caret"></b>
  27.             </a>
  28.             <ul class="dropdown-menu" role="menu"                 aria-labelledby="navbarDrop1">
  29.                <li><a href="#jmeter" tabindex="-1">jmeter</a></li>
  30.                <li><a href="#ejb" tabindex="-1">ejb</a></li>
  31.                <li class="divider"></li>
  32.                <li><a href="#spring" tabindex="-1">spring</a></li>
  33.             </ul>
  34.          </li>
  35.       </ul>
  36.    </div>
  37. </nav>
  38. <div data-spy="scroll" data-target="#navbar-example" data-offset="0"     style="height:200px;overflow:auto; position: relative;">
  39.    <h4 id="ios">iOS</h4>
  40.    <p>iOS 是一个由苹果公司开发和发布的手机操作系统。最初是于 2007 年首次发布 iPhone、iPod Touch 和 Apple
  41.       TV。iOS 派生自 OS X,它们共享 Darwin 基础。OS X 操作系统是用在苹果电脑上,iOS 是苹果的移动版本。
  42.    </p>
  43.    <h4 id="svn">SVN</h4>
  44.    <p>Apache Subversion,通常缩写为 SVN,是一款开源的版本控制系统软件。Subversion 由 CollabNet 公司在 2000 年创建。但是现在它已经发展为 Apache Software Foundation 的一个项目,因此拥有丰富的开发人员和用户社区。
  45.    </p>
  46.    <h4 id="jmeter">jMeter</h4>
  47.    <p>jMeter 是一款开源的测试软件。它是 100% 纯 Java 应用程序,用于负载和性能测试。
  48.    </p>
  49.    <h4 id="ejb">EJB</h4>
  50.    <p>Enterprise Java Beans(EJB)是一个创建高度可扩展性和强大企业级应用程序的开发架构,部署在兼容应用程序服务器(比如 JBOSS、Web Logic 等)的 J2EE 上。
  51.    </p>
  52.    <h4 id="spring">Spring</h4>
  53.    <p>Spring 框架是一个开源的 Java 平台,为快速开发功能强大的 Java 应用程序提供了完备的基础设施支持。
  54.    </p>
  55.    <p>Spring 框架最初是由 Rod Johnson 编写的,在 2003 年 6 月首次发布于 Apache 2.0 许可证下。
  56.    </p>
  57. </div>

  58. </body>
  59. </html>
复制代码


结果如下所示:

选项
通过 data 属性或 JavaScript 来传递。下表列出了这些选项:
选项名称
类型/默认值
Data 属性名称
描述
offsetnumber
默认值:10
data-offset当计算滚动位置时,距离顶部的偏移像素。
方法.scrollspy('refresh'):当通过 JavaScript 调用 scrollspy 方法时,您需要调用 .refresh 方法来更新 DOM。这在 DOM 的任意元素发生变更(即,您添加或移除了某些元素)时非常有用。下面是使用该方法的语法。
  1. $('[data-spy="scroll"]').each(function () {
  2.   var $spy = $(this).scrollspy('refresh')
  3. })
复制代码

实例
下面的实例演示了 .scrollspy('refresh') 方法的用法:
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.    <title>Bootstrap 实例 - 滚动监听(Scrollspy)插件方法</title>
  5.    <link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet">
  6.    <script src="/scripts/jquery.min.js"></script>
  7.    <script src="/bootstrap/js/bootstrap.min.js"></script>
  8. </head>
  9. <body>

  10. <nav id="myScrollspy" class="navbar navbar-default navbar-static" role="navigation">
  11.    <div class="navbar-header">
  12.       <button class="navbar-toggle" type="button" data-toggle="collapse"           data-target=".bs-js-navbar-scrollspy">
  13.          <span class="sr-only">切换导航</span>
  14.          <span class="icon-bar"></span>
  15.          <span class="icon-bar"></span>
  16.          <span class="icon-bar"></span>
  17.       </button>
  18.       <a class="navbar-brand" href="#">教程名称</a>
  19.    </div>
  20.    <div class="collapse navbar-collapse bs-js-navbar-scrollspy">
  21.       <ul class="nav navbar-nav">
  22.          <li class="active"><a href="#ios">iOS</a></li>
  23.          <li><a href="#svn">SVN</a></li>
  24.          <li class="dropdown">
  25.             <a href="#" id="navbarDrop1" class="dropdown-toggle"                 data-toggle="dropdown">Java
  26.                <b class="caret"></b>
  27.             </a>
  28.             <ul class="dropdown-menu" role="menu"                 aria-labelledby="navbarDrop1">
  29.                <li><a href="#jmeter" tabindex="-1">jmeter</a></li>
  30.                <li><a href="#ejb" tabindex="-1">ejb</a></li>
  31.                <li class="divider"></li>
  32.                <li><a href="#spring" tabindex="-1">spring</a></li>
  33.             </ul>
  34.          </li>
  35.       </ul>
  36.    </div>
  37. </nav>
  38. <div data-spy="scroll" data-target="#myScrollspy" data-offset="0"     style="height:200px;overflow:auto; position: relative;">
  39.    <div class="section">
  40.       <h4 id="ios">iOS<small><a href="#" onclick="removeSection(this);">
  41.          &times; 删除该部分</a></small>
  42.       </h4>
  43.       <p>iOS 是一个由苹果公司开发和发布的手机操作系统。最初是于 2007 年首次发布 iPhone、iPod Touch 和 Apple
  44.       TV。iOS 派生自 OS X,它们共享 Darwin 基础。OS X 操作系统是用在苹果电脑上,iOS 是苹果的移动版本。</p>
  45.    </div>
  46.    <div class="section">
  47.       <h4 id="svn">SVN<small></small></h4>
  48.       <p>Apache Subversion,通常缩写为 SVN,是一款开源的版本控制系统软件。Subversion 由 CollabNet 公司在 2000 年创建。但是现在它已经发展为 Apache Software Foundation 的一个项目,因此拥有丰富的开发人员和用户社区。</p>
  49.    </div>
  50.    <div class="section">
  51.       <h4 id="jmeter">jMeter<small><a href="#" onclick="removeSection(this);">
  52.       &times; 删除该部分</a></small>
  53.       </h4>
  54.       <p>jMeter 是一款开源的测试软件。它是 100% 纯 Java 应用程序,用于负载和性能测试。</p>
  55.    </div>
  56.    <div class="section">
  57.       <h4 id="ejb">EJB</h4>
  58.       <p>Enterprise Java Beans(EJB)是一个创建高度可扩展性和强大企业级应用程序的开发架构,部署在兼容应用程序服务器(比如 JBOSS、Web Logic 等)的 J2EE 上。</p>
  59.    </div>
  60.    <div class="section">
  61.       <h4 id="spring">Spring</h4>
  62.       <p>Spring 框架是一个开源的 Java 平台,为快速开发功能强大的 Java 应用程序提供了完备的基础设施支持。</p>
  63.       <p>Spring 框架最初是由 Rod Johnson 编写的,在 2003 年 6 月首次发布于 Apache 2.0 许可证下。</p>
  64.    </div>
  65. </div>
  66. <script type="text/javascript">
  67.    $(function(){
  68.    removeSection = function(e) {
  69.       $(e).parents(".section").remove();
  70.       $('[data-spy="scroll"]').each(function () {
  71.          var $spy = $(this).scrollspy('refresh')
  72.       });
  73.    }
  74.    $("#myScrollspy").scrollspy();
  75. });
  76. </script>

  77. </body>
  78. </html>
复制代码


结果如下所示:

事件
下表列出了滚动监听中要用到事件。这些事件可在函数中当钩子使用。
事件
描述
实例
activate.bs.scrollspy每当一个新项目被滚动监听激活时,触发该事件。$('#myScrollspy').on('activate.bs.scrollspy', function () {  // 执行一些动作...})
实例
下面的实例演示了 activate.bs.scrollspy 事件的用法:
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.    <title>Bootstrap 实例 - 滚动监听(Scrollspy)插件事件</title>
  5.    <link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet">
  6.    <script src="/scripts/jquery.min.js"></script>
  7.    <script src="/bootstrap/js/bootstrap.min.js"></script>
  8. </head>
  9. <body>

  10. <nav id="myScrollspy" class="navbar navbar-default navbar-static" role="navigation">
  11.    <div class="navbar-header">
  12.       <button class="navbar-toggle" type="button" data-toggle="collapse"           data-target=".bs-js-navbar-scrollspy">
  13.          <span class="sr-only">切换导航</span>
  14.          <span class="icon-bar"></span>
  15.          <span class="icon-bar"></span>
  16.          <span class="icon-bar"></span>
  17.       </button>
  18.       <a class="navbar-brand" href="#">教程名称</a>
  19.    </div>
  20.    <div class="collapse navbar-collapse bs-js-navbar-scrollspy">
  21.       <ul class="nav navbar-nav">
  22.          <li class="active"><a href="#ios">iOS</a></li>
  23.          <li><a href="#svn">SVN</a></li>
  24.          <li class="dropdown">
  25.             <a href="#" id="navbarDrop1" class="dropdown-toggle"                 data-toggle="dropdown">
  26.                Java <b class="caret"></b>
  27.             </a>
  28.             <ul class="dropdown-menu" role="menu"                 aria-labelledby="navbarDrop1">
  29.                <li><a href="#jmeter" tabindex="-1">jmeter</a></li>
  30.                <li><a href="#ejb" tabindex="-1">ejb</a></li>
  31.                <li class="divider"></li>
  32.                <li><a href="#spring" tabindex="-1">spring</a></li>
  33.             </ul>
  34.          </li>
  35.       </ul>
  36.    </div>
  37. </nav>
  38. <div data-spy="scroll" data-target="#myScrollspy" data-offset="0"     style="height:200px;overflow:auto; position: relative;">
  39.    <div class="section">
  40.       <h4 id="ios">iOS<small><a href="#" onclick="removeSection(this);">
  41.          &times; 删除该部分</a></small>
  42.       </h4>
  43.       <p>iOS 是一个由苹果公司开发和发布的手机操作系统。最初是于 2007 年首次发布 iPhone、iPod Touch 和 Apple
  44.       TV。iOS 派生自 OS X,它们共享 Darwin 基础。OS X 操作系统是用在苹果电脑上,iOS 是苹果的移动版本。</p>
  45.    </div>
  46.    <div class="section">
  47.       <h4 id="svn">SVN<small></small></h4>
  48.       <p>Apache Subversion,通常缩写为 SVN,是一款开源的版本控制系统软件。Subversion 由 CollabNet 公司在 2000 年创建。但是现在它已经发展为 Apache Software Foundation 的一个项目,因此拥有丰富的开发人员和用户社区。</p>
  49.    </div>
  50.    <div class="section">
  51.       <h4 id="jmeter">jMeter<small><a href="#" onclick="removeSection(this);">
  52.          &times; 删除该部分</a></small>
  53.       </h4>
  54.       <p>jMeter 是一款开源的测试软件。它是 100% 纯 Java 应用程序,用于负载和性能测试。</p>
  55.    </div>
  56.    <div class="section">
  57.       <h4 id="ejb">EJB</h4>
  58.       <p>Enterprise Java Beans(EJB)是一个创建高度可扩展性和强大企业级应用程序的开发架构,部署在兼容应用程序服务器(比如 JBOSS、Web Logic 等)的 J2EE 上。</p>
  59.    </div>
  60.    <div class="section">
  61.       <h4 id="spring">Spring</h4>
  62.       <p>Spring 框架是一个开源的 Java 平台,为快速开发功能强大的 Java 应用程序提供了完备的基础设施支持。</p>
  63.       <p>Spring 框架最初是由 Rod Johnson 编写的,在 2003 年 6 月首次发布于 Apache 2.0 许可证下。</p>
  64.    </div>
  65. </div>
  66. <span id="activeitem" style="color:red;"></span>
  67. <script type="text/javascript">
  68.    $(function(){
  69.       removeSection = function(e) {
  70.       $(e).parents(".section").remove();
  71.       $('[data-spy="scroll"]').each(function () {
  72.           var $spy = $(this).scrollspy('refresh')
  73.       });
  74.    }
  75.    $("#myScrollspy").scrollspy();
  76.    $('#myScrollspy').on('activate.bs.scrollspy', function () {
  77.       var currentItem = $(".nav li.active > a").text();
  78.       $("#activeitem").html("目前您正在查看 - " + currentItem);
  79.    })
  80. });
  81. </script>

  82. </body>
  83. </html>
复制代码


结果如下所示:


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|小黑屋|学IT网-在线学习IT知识,学习编程知识 ( 京ICP备17027470号-2

GMT+8, 2019-11-17 18:20 , Processed in 0.054822 second(s), 34 queries .

Powered by xueit.wang 1.0

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表