The Bootstrap Scrollspy Plugin allows you target sections of the page based on scroll position. In its basic implementation, as you scroll, you can include .active classes to the navbar based on the scroll position.
If you want to add this bootstrap plugin functionality individually, you will need scrollspy.js. Otherwise, as mentioned in the tutorial Bootstrap Plugins Overview, you can add bootstrap.js or the manified bootstrap.min.js.
Usage
- By utilizing data attributes - add data-spy = "scroll" to the element you want to spy on. And then include the data-target attribute with the ID or class of the parent element of any Bootstrap's .nav component. In order for this to work, you must have elements in the body of the page that have matching IDs of the links that you are spying on.
<body data-spy = "scroll" data-target = ".navbar-example"> ... <div class = "navbar-example"> <ul class = "nav nav-tabs"> ... </ul> </div> ... </body>
- By using JavaScript - You can invoke the scrollspy with JavaScript instead of using the data attributes, by simply selecting the element to spy on, and then invoking the .scrollspy() function -
$('body').scrollspy({ target: '.navbar-example' })
Example
<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>
Output
iOS
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.
SVN
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.
jMeter
jMeter is an Open Source testing software. It is 100% pure Java application for load and performance testing.
EJB
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.
Spring
Spring framework is an open source Java platform that provides comprehensive infrastructure support for developing robust Java applications very easily and very rapidly.
Spring framework was initially written by Rod Johnson and was first released under the Apache 2.0 license in June 2003.
Options
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. |
Methods
Syntax
$('[data-spy = "scroll"]').each(function () { var $spy = $(this).scrollspy('refresh') })
Example
<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);"> × 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);"> × 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>
Output
iOS × Remove this section
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.
SVN
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.
jMeter × Remove this section
jMeter is an Open Source testing software. It is 100% pure Java application for load and performance testing.
EJB
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.
Spring
Spring framework is an open source Java platform that provides comprehensive infrastructure support for developing robust Java applications very easily and very rapidly.
Spring framework was initially written by Rod Johnson and was first released under the Apache 2.0 license in June 2003.
Events
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… }) |
Example
<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").html("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 = "#">WebDesignTutorialz</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>
Output
Subject 1 Remove Subject �
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.
Subject 2 Remove Subject �
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.
Subject 3 Remove Subject �
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.
Subject 3.1 Remove Subject �
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.
Subject 3.2 Remove Subject �
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.
Subject 3.3 Remove Subject �
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.
Subject 4 Remove Subject �
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.
Current Item being viewed >> Subject 3Subject 3.3
Feel free to ask your questions where necessary and we will attend to them as soon as possible. If this tutorial was helpful to you, you can use the share button to share this tutorial.
Follow us on our various social media platforms to stay updated with our latest tutorials. You can also subscribe to our newsletter in order to get our tutorials delivered directly to your emails.
Thanks for reading and bye for now.