Page Scroll Progress Bar

In this tutorial, you will learn how to add a simple progress bar on page scroll using CSS and JavaScript. Watch the video below for a detailed tutorial.


HTML

<body>
  <div class="progress-bar"></div>
  <div class="container">
    <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. A, debitis quisquam. Inventore quod quos asperiores eaque optio facere eius vero sit cupiditate? Nesciunt minima numquam, ab est in laudantium eos!</p>
    <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. A, debitis quisquam. Inventore quod quos asperiores eaque optio facere eius vero sit cupiditate? Nesciunt minima numquam, ab est in laudantium eos!</p>
    <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. A, debitis quisquam. Inventore quod quos asperiores eaque optio facere eius vero sit cupiditate? Nesciunt minima numquam, ab est in laudantium eos!</p>
    <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. A, debitis quisquam. Inventore quod quos asperiores eaque optio facere eius vero sit cupiditate? Nesciunt minima numquam, ab est in laudantium eos!</p>
    <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. A, debitis quisquam. Inventore quod quos asperiores eaque optio facere eius vero sit cupiditate? Nesciunt minima numquam, ab est in laudantium eos!</p>
    <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. A, debitis quisquam. Inventore quod quos asperiores eaque optio facere eius vero sit cupiditate? Nesciunt minima numquam, ab est in laudantium eos!</p>
    <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. A, debitis quisquam. Inventore quod quos asperiores eaque optio facere eius vero sit cupiditate? Nesciunt minima numquam, ab est in laudantium eos!</p>
    <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. A, debitis quisquam. Inventore quod quos asperiores eaque optio facere eius vero sit cupiditate? Nesciunt minima numquam, ab est in laudantium eos!</p>
    <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. A, debitis quisquam. Inventore quod quos asperiores eaque optio facere eius vero sit cupiditate? Nesciunt minima numquam, ab est in laudantium eos!</p>
    <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. A, debitis quisquam. Inventore quod quos asperiores eaque optio facere eius vero sit cupiditate? Nesciunt minima numquam, ab est in laudantium eos!</p>
  </div>

  <script>
    function extendBar() {
      const percentage = (window.scrollY / (document.body.clientHeight - window.innerHeight)) * 100;

      document.querySelector('.progress-bar').style.width = percentage + '%';
    }

    window.addEventListener('scroll', extendBar);
  </script>
</body>

CSS

body {
	background-color: #2E3537;
	padding: 50px;
	font-family: 'Arial', sans-serif;
}

.container {
	background-color: white;
	padding: 50px;
}

.progress-bar {
	position: fixed;
	top: 0;
	left: 0;
	background-color: #19CBFC;
	height: 10px;
	transition: width 0.5s;
}