Bootstrap-Plugin:滾動監聽(Scrollspy)插件

ylbtech-Bootstrap-Plugin:滾動監聽(Scrollspy)插件

 

1.返回頂部
一、

Bootstrap 滾動監聽(Scrollspy)插件

滾動監聽(Scrollspy)插件,即自動更新導航插件,會根據滾動條的位置自動更新對應的導航目標。其基本的實現是隨着您的滾動,基於滾動條的位置嚮導航欄添加 .active class。php

若是您想要單獨引用該插件的功能,那麼您須要引用 scrollspy.js。或者,正如 Bootstrap 插件概覽 一章中所提到,您能夠引用 bootstrap.js 或壓縮版的 bootstrap.min.jshtml

用法

您能夠向頂部導航添加滾動監聽行爲:ios

  • 經過 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)插件:spring

實例

<nav id="navbar-example" class="navbar navbar-default navbar-static" role="navigation">
    <div class="container-fluid"> 
    <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>
    </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 操做系統是用在蘋果電腦上,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>

 嘗試一下 »bootstrap

結果以下所示:服務器

滾動監聽(Scrollspy)插件

選項

經過 data 屬性或 JavaScript 來傳遞。下表列出了這些選項:架構

選項名稱 類型/默認值 Data 屬性名稱 描述
offset number
默認值:10
data-offset 當計算滾動位置時,距離頂部的偏移像素。

方法

.scrollspy('refresh'):當經過 JavaScript 調用 scrollspy 方法時,您須要調用  .refresh 方法來更新 DOM。這在 DOM 的任意元素髮生變動(即,您添加或移除了某些元素)時很是有用。下面是使用該方法的語法。
$('[data-spy="scroll"]').each(function () {
  var $spy = $(this).scrollspy('refresh')
})

 

實例

下面的實例演示了 .scrollspy('refresh') 方法的用法:框架

實例

<nav id="myScrollspy" class="navbar navbar-default navbar-static" role="navigation">
    <div class="container-fluid"> 
    <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>
    </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 操做系統是用在蘋果電腦上,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>
    $(function(){
        removeSection = function(e) {
            $(e).parents(".section").remove();
            $('[data-spy="scroll"]').each(function () {
                var $spy = $(this).scrollspy('refresh')
            });
        }
        $("#myScrollspy").scrollspy();
    });
</script>

 嘗試一下 »ide

結果以下所示:svn

滾動監聽(Scrollspy)插件方法

事件

下表列出了滾動監聽中要用到事件。這些事件可在函數中當鉤子使用。

事件 描述 實例
activate.bs.scrollspy 每當一個新項目被滾動監聽激活時,觸發該事件。
$('#myScrollspy').on('activate.bs.scrollspy', function () { // 執行一些動做... })

實例

下面的實例演示了 activate.bs.scrollspy 事件的用法:

實例

<nav id="myScrollspy" class="navbar navbar-default navbar-static" role="navigation">
    <div class="container-fluid"> 
    <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>
    </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 操做系統是用在蘋果電腦上,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>
    $(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>

 嘗試一下 »

結果以下所示:

滾動監聽(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>

 嘗試一下 »

二、
2.返回頂部
 
3.返回頂部
 
4.返回頂部
 
5.返回頂部
一、
二、
 
11.返回頂部
 
warn 做者:ylbtech
出處:http://ylbtech.cnblogs.com/
本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。

 

滾動監聽(Scrollspy)插件

相關文章
相關標籤/搜索