White Arrow icon
Back to all Elements

Scroll Menu to Current Link

Using JS to scroll a div (menu) to the current link inside.

I see more and more designs with side scroll menus, so I figured we need a component that automatically scrolls the menu to our current link.

Our structure needs to be:

  • The "scrollable" DIV with overflow:auto, display:flex. This item needs an ID of 'scrollMenu'.
  • Inside the scrollable DIV we add all the links. Those can be static text-links elements, or dynamic list with a text-link in each item.

Our code waits for the page to load, and then checks for the current link's offset from the left, and then scrolls the menu in that amount. I added 20px padding for the menu, thus the "-20px"

Add this code to every page the menu appears on, at the page settings section "Before </body> tag"

<script>
 window.addEventListener('DOMContentLoaded', (event) => {

   const scrollDiv = document.getElementById('scrollMenu');
   const links = document.querySelectorAll('.link.w--current');
   const currentLink = links[0];
   const currentLinkOffset = links[0].offsetLeft - 20;
   
   scrollDiv.scrollLeft = currentLinkOffset;
 });
</script>

Copy

Preview:

browser mockup
Share:
Heart icon

When your bath soap bar gets too small to use, don't throw it away! open the next bar, and when you finish showering, stick the small old bar to the back of the new bar. Onces they both dry, they will become one.

Might also interest you:

CMS Autocomplete

Cloneable
CMS
JavaScript

A short JavaScript code for transferring a CMS list into an autocomplete on an input field.

Read more
Blue arrow iconWhite Arrow icon

Auto get Current Year

Cloneable
Code
JavaScript

Automatically insert the current year to any element with the class of 'year'

Read more
Blue arrow iconWhite Arrow icon

Background Video with Audio (using plyr.js)

Cloneable
Code
JavaScript

An embed video with Mute/UnMute button using plyr.js plugin.

Read more
Blue arrow iconWhite Arrow icon