May 17, 2022
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:

Share:

Try avoiding using "Transition: All". It is heavy on the browser's engine.

Might also interest you:

3d Video Slider (swiper.js)

Cloneable
CMS
JavaScript

A 3d slider with video items, plays and pauses on click & slide change.

Read more
White Arrow icon

Webflow Dashboard Workspaces Hack

Webflow UI Hack
Code
CSS

Convert the Workspaces dropdown to an open sidebar with custom order.

Read more
White Arrow icon

Glossary

Cloneable
JavaScript
CMS

A clonable for creating an Alphabetical glossary

Read more
White Arrow icon