This tutorial is out of date and no longer maintained.
The content of an HTML document can be very long and difficult to access only through the scroll. Because of this arduous task, developers often use internal links (page jumps) as an alternative mode of transport around the page. This useful technique has been improved with the help of Javascript to offer a better experience, primarily by offering soft jumps and then introducing the so-called Scrollspy scripts.
A Scrollspy is used to automatically update links in a navigation list based on scroll position.
Through this tutorial, we’ll be building a custom Scrollspy component. See exactly what we are going to build below:
Also, you can take a look at the working DEMO.
To accomplish this custom Scrollspy we will be using:
Along with the tutorial, we’ll be explaining some features we use of these libraries, but it’s a good idea to check the Github repositories, for basic understanding.
Let’s start with the HTML structure we’ll be using, describing the key elements in the comments:
With the HTML ready, we are all set to add some style. Let’s see the key style pieces commented briefly:
As we will be working closely with the DOM, we need to get all the elements we need first. Also, we will declare the additional variables we will be using.
The following is a key part of the puzzle. This function translates the nav
element to show only the selected link, using the activeIndex
value.
Then, we need a way to open and close the nav
. The open state should let us see all the links and allow us to select one of them directly. The close state is the default one, letting see only the selected link.
Now let’s see how we handle the events. We need handlers to open or close the nav
accordingly.
We are ready to let Gumshoe and Smooth Scroll do the magic. See how we are initializing them:
And we are done! You can see it working here.
For the sake of clarity, we have commented only the most important parts of the code. But you can get it all from this GitHub repo.
We really hope you have enjoyed it and found it useful!
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!