Bootstrap-scrollspy-plugin

提供:Dev Guides
移動先:案内検索

ブートストラップ-Scrollspyプラグイン

スクロールスパイ(自動更新nav)プラグインを使用すると、スクロール位置に基づいてページのセクションをターゲットにできます。 基本的な実装では、スクロールするときに、スクロール位置に基づいて .active クラスをnavbarに追加できます。

'_このプラグイン機能を個別に含める場合は、 scrollspy.js が必要です。 または、リンク:/bootstrap/bootstrap_plugins_overview [Bootstrap Plugins Overview]で説明されているように、_bootstrap.js_または縮小された_bootstrap.min.js_を含めることができます。_

使用法

あなたはあなたのトップバーナビゲーションにscrollspyの動作を追加することができます-

  • データ属性経由-スパイしたい要素(通常は本文)に data-spy = "scroll" を追加します。 次に、Bootstrap .nav コンポーネントの親要素のIDまたはクラスを持つ属性 data-target を追加します。 これを機能させるには、ページの本文に、スパイしているリンクの一致するIDを持つ要素が必要です。
<body data-spy = "scroll" data-target = ".navbar-example">
   ...
   <div class = "navbar-example">
      <ul class = "nav nav-tabs">
         ...
      </ul>
   </div>
   ...
</body>
  • Via JavaScript -データ属性を使用する代わりにJavaScriptでscrollspyを呼び出すことができます。スパイする要素を選択し、*。scrollspy()*関数を呼び出します-
$('body').scrollspy({ target: '.navbar-example' })

次の例は、データ属性を介したscrollspyプラグインの使用を示しています-

<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">Toggle navigation</span>
         <span class = "icon-bar"></span>
         <span class = "icon-bar"></span>
         <span class = "icon-bar"></span>
      </button>

      <a class = "navbar-brand" href = "#">Tutorial Name</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 is a mobile operating system developed and distributed by Apple
      Inc. Originally released in 2007 for the iPhone, iPod Touch, and Apple
      TV. iOS is derived from OS X, with which it shares the Darwin
      foundation. iOS is Apple's mobile version of the OS X operating system
      used on Apple computers.</p>

   <h4 id = "svn">SVN</h4>

   <p>Apache Subversion which is often abbreviated as SVN, is a software
      versioning and revision control system distributed under an open source
      license. Subversion was created by CollabNet Inc. in 2000, but now it
      is developed as a project of the Apache Software Foundation, and as
      such is part of a rich community of developers and users.</p>

   <h4 id = "jmeter">jMeter</h4>

   <p>jMeter is an Open Source testing software. It is 100% pure Java
      application for load and performance testing.</p>

   <h4 id = "ejb">EJB</h4>

   <p>Enterprise Java Beans (EJB) is a development architecture for building
      highly scalable and robust enterprise level applications to be deployed
      on J2EE compliant Application Server such as JBOSS, Web Logic etc.</p>

   <h4 id = "spring">Spring</h4>

   <p>Spring framework is an open source Java platform that provides
      comprehensive infrastructure support for developing robust Java
      applications very easily and very rapidly.</p>

   <p>Spring framework was initially written by Rod Johnson and was first
      released under the Apache 2.0 license in June 2003.</p>

</div>

オプション

オプションは、データ属性またはJavaScriptを介して渡すことができます。 次の表にオプションを示します-

Option Name Type/Default Value Data attribute name Description
offset number Default: 10 data-offset Pixels to offset from top when calculating position of scroll.

方法

  • .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 = "navbar-header">
      <button class = "navbar-toggle" type = "button" data-toggle = "collapse"
         data-target = ".bs-js-navbar-scrollspy">
         <span class = "sr-only">Toggle navigation</span>
         <span class = "icon-bar"></span>
         <span class = "icon-bar"></span>
         <span class = "icon-bar"></span>
      </button>

      <a class = "navbar-brand" href = "#">Tutorial Name</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; Remove this section</a></small>
      </h4>

      <p>iOS is a mobile operating system developed and distributed by
         Apple Inc. Originally released in 2007 for the iPhone, iPod Touch, and
         Apple TV. iOS is derived from OS X, with which it shares the Darwin
         foundation. iOS is Apple's mobile version of the OS X operating system
         used on Apple computers.</p>
   </div>

   <div class = "section">
      <h4 id = "svn">SVN<small></small></h4>
      <p>Apache Subversion which is often abbreviated as SVN, is a software
         versioning and revision control system distributed under an open source
         license. Subversion was created by CollabNet Inc. in 2000, but
         now it is developed as a project of the Apache Software Foundation,
         and as such is part of a rich community of developers and users.</p>
   </div>

   <div class = "section">
      <h4 id = "jmeter">jMeter<small><a href = "#" onclick = "removeSection(this);">
         &times; Remove this section</a></small>
      </h4>

      <p>jMeter is an Open Source testing software. It is 100% pure Java
         application for load and performance testing.</p>
   </div>

   <div class = "section">
      <h4 id = "ejb">EJB</h4>

      <p>Enterprise Java Beans (EJB) is a development architecture for
         building highly scalable and robust enterprise level applications
         to be deployed on J2EE compliant Application Server such as
         JBOSS, Web Logic etc.</p>
   </div>

   <div class = "section">
      <h4 id = "spring">Spring</h4>

      <p>Spring framework is an open source Java platform that provides
         comprehensive infrastructure support for developing robust Java
         applications very easily and very rapidly.</p>

      <p>Spring framework was initially written by Rod Johnson and was first
         released under the Apache 2.0 license in June 2003.</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>

イベント

次の表に、scrollspyで動作するイベントを示します。 このイベントを使用して、関数にフックすることができます。

Event Description Example
activate.bs.scrollspy This event fires whenever a new item becomes activated by the scrollspy.
$('#myScrollspy').on('activate.bs.scrollspy', function () {
  //do something…
})

次の例は、 activate.bs.scrollspy イベントの使用を示しています-

<html>
   <head>
      <link rel = "stylesheet" href = "bootstrap/css/bootstrap.min.css">
      <script src = "bootstrap/scripts/jquery.min.js"></script>
      <script src = "bootstrap/js/bootstrap.min.js"></script>

      <script>
         $(document).ready(function(){
            removeSection = function(e) {
               $(e).parents(".subject").remove();

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

            $("#Navexample").scrollspy();

           //The event is fired when an item gets actived with the scrollspy
            $("#Navexample").on('activate.bs.scrollspy', function () {
               var currentSection = $(".nav li.active > a").text();
               $("#spyevent")l("Current Item being viewed >> " + currentSection);
            })

         });
      </script>

      <style>
         .scroll-box {
            height: 250px;
            position: relative;
            overflow: auto;
            font-size:2em;
         }
      </style>
   </head>

   <body>
      <div class = "container">
         <nav id = "Navexample" class = "navbar navbar-default" role = "navigation">

            <!-- Nav Bar -->
            <div class = "navbar-header">
               <button type = "button" class = "navbar-toggle"
                  data-toggle = "collapse" data-target = "#navbarCollapse">

                  <span class = "sr-only">Toggle navigation</span>
                  <span class = "icon-bar"></span>
                  <span class = "icon-bar"></span>
                  <span class = "icon-bar"></span>
               </button>

               <a class = "navbar-brand" href = "#">Tutorials Point</a>
            </div>

            <!-- Links and Sublinks -->
            <div class = "collapse navbar-collapse" id = "navbarCollapse">
               <ul class = "nav navbar-nav">
                  <li class = "active"><a href = "#subject-1">Subject 1</a></li>
                  <li><a href = "#subject-2">Subject 2</a></li>

                  <li class = "dropdown"><a href = "#" class = "dropdown-toggle"
                     data-toggle = "dropdown">Subject 3<b class = "caret"></b></a>

                     <ul class = "dropdown-menu">
                        <li><a href = "#subject-3-1">Subject 3.1</a></li>
                        <li><a href = "#subject-3-2">Subject 3.2</a></li>
                        <li><a href = "#subject-3-3">Subject 3.3</a></li>
                     </ul>

                  </li>

                  <li><a href = "#subject-4">Subject 4</a></li>
               </ul>
            </div>

         </nav>

         <div class = "scroll-box" data-spy = "scroll" data-offset = "0">
            <div class = "subject">

               <h3 id = "subject-1">Subject 1
                  <small><a href = "#" onclick = "removeSubject(this);">Remove Subject ×</a></small>
               </h3>

               <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit,
                  sed do eiusmod tempor incididunt ut labore et dolore magna
                  aliqua. Ut enim ad minim veniam, quis nostrud exercitation
                  ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
            </div>

            <hr>

            <div class = "subject">
               <h3 id = "subject-2">Subject 2
                  <small><a href = "#" onclick = "removeSubject(this);">Remove Subject ×</a></small>
               </h3>

               <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit,
                  sed do eiusmod tempor incididunt ut labore et dolore magna
                  aliqua. Ut enim ad minim veniam, quis nostrud exercitation
                  ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
            </div>

            <hr>

            <div class = "subject">
               <h3 id = "subject-3">Subject 3
                  <small><a href = "#" onclick = "removeSubject(this);"> Remove Subject ×</a></small>
               </h3>

               <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit,
                  sed do eiusmod tempor incididunt ut labore et dolore magna
                  aliqua. Ut enim ad minim veniam, quis nostrud exercitation
                  ullamco laboris nisi ut aliquip ex ea commodo consequat.</p><
            </div>

            <hr>

            <div class = "subject">
               <h4 id = "subject-3-1">Subject 3.1
                  <small><a href = "#" onclick = "removeSubject(this);"> Remove Subject ×</a></small>
               </h4>

               <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit,
                  sed do eiusmod tempor incididunt ut labore et dolore magna
                  aliqua. Ut enim ad minim veniam, quis nostrud exercitation
                  ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
            </div>

            <div class = "subject">
               <h4 id = "subject-3-2">Subject 3.2
                  <small><a href = "#" onclick = "removeSubject(this);"> Remove Subject ×</a></small>
               </h4>

               <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit,
                  sed do eiusmod tempor incididunt ut labore et dolore magna
                  aliqua. Ut enim ad minim veniam, quis nostrud exercitation
                  ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
            </div>

            <div class = "subject">
               <h4 id = "subject-3-3">Subject 3.3
                  <small><a href = "#" onclick = "removeSubject(this);">Remove Subject ×</a></small>
               </h4>

               <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit,
                  sed do eiusmod tempor incididunt ut labore et dolore magna
                  aliqua. Ut enim ad minim veniam, quis nostrud exercitation
                  ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
            </div>

            <hr>

            <div class = "subject">
               <h3 id = "subject-4">Subject 4
                  <small><a href = "#" onclick = "removeSubject(this);">Remove Subject ×</a></small>
               </h3>

               <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit,
                  sed do eiusmod tempor incididunt ut labore et dolore magna
                  aliqua. Ut enim ad minim veniam, quis nostrud exercitation
                  ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
            </div>

         </div>
         <hr>

         <h4 id = "spyevent" class = "text-info"></h4>
      </div>
   </body>
</html>