position: fixed
and a large z-index
value to place the element at the top of the page and above any content.EventTarget.addEventListener()
and Element.scrollTop
to determine the scroll percentage of the document and apply it to the width
of the element.<div id="scroll-progress"></div>
body { min-height: 200vh; } #scroll-progress { position: fixed; top: 0; width: 0%; height: 4px; background: #7983ff; z-index: 10000; }
const scrollProgress = document.getElementById('scroll-progress');
const height =
document.documentElement.scrollHeight - document.documentElement.clientHeight;
window.addEventListener('scroll', () => {
const scrollTop =
document.body.scrollTop || document.documentElement.scrollTop;
scrollProgress.style.width = `${(scrollTop / height) * 100}%`;
});
Subscribe to get resources directly to your inbox. You won't receive any spam! ✌️