Files
30-seconds-of-code/snippets/scroll-progress-bar.md
Angelos Chalaris 43a3dbcc08 Update covers
2023-02-16 22:24:33 +02:00

1.1 KiB

title, tags, author, cover, firstSeen, lastUpdated
title tags author cover firstSeen lastUpdated
Scroll progress bar animation,visual chalarangelo coworking-space 2021-05-24T09:42:03+03:00 2021-10-13T19:29:39+02:00

Creates a progress bar indicating the scroll percentage of the page.

  • Use position: fixed and a large z-index value to place the element at the top of the page and above any content.
  • Use 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}%`;
});