Skip to content

Instantly share code, notes, and snippets.

@andoniaf
Created September 5, 2020 08:08
Show Gist options
  • Save andoniaf/4cb8f8e4fc91307d551be880b3067ee7 to your computer and use it in GitHub Desktop.
Save andoniaf/4cb8f8e4fc91307d551be880b3067ee7 to your computer and use it in GitHub Desktop.
Custom Scroll Bar
<div id="progressBar"></div>
<div id="progressBarContainer"></div>
<h1>Welcome.</h1>
<p>
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Aspernatur
provident eveniet veritatis ipsa id consectetur ab tenetur dolores eaque.
Temporibus laboriosam cum corporis amet doloremque animi aut ipsa ea a?
</p>
<p>
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Aspernatur
provident eveniet veritatis ipsa id consectetur ab tenetur dolores eaque.
Temporibus laboriosam cum corporis amet doloremque animi aut ipsa ea a?
</p>
<p>
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Aspernatur
provident eveniet veritatis ipsa id consectetur ab tenetur dolores eaque.
Temporibus laboriosam cum corporis amet doloremque animi aut ipsa ea a?
</p>
<p>
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Aspernatur
provident eveniet veritatis ipsa id consectetur ab tenetur dolores eaque.
Temporibus laboriosam cum corporis amet doloremque animi aut ipsa ea a?
</p>
<p>
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Aspernatur
provident eveniet veritatis ipsa id consectetur ab tenetur dolores eaque.
Temporibus laboriosam cum corporis amet doloremque animi aut ipsa ea a?
</p>
<p>
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Aspernatur
provident eveniet veritatis ipsa id consectetur ab tenetur dolores eaque.
Temporibus laboriosam cum corporis amet doloremque animi aut ipsa ea a?
</p>
<p>
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Aspernatur
provident eveniet veritatis ipsa id consectetur ab tenetur dolores eaque.
Temporibus laboriosam cum corporis amet doloremque animi aut ipsa ea a?
</p>
const progressBar = document.querySelector("#progressBar");
let totalPageHeight = document.body.scrollHeight - window.innerHeight;
window.onscroll = () => {
let newProgressHeight = (window.pageYOffset / totalPageHeight) * 100;
progressBar.style.width = `${newProgressHeight}%`;
progressBar.style.opacity = `${newProgressHeight}%`;
};
html {
overflow: -moz-scrollbars-none;
scrollbar-width: none;
}
body {
background: #171414;
font-family: "Courier New", Courier, monospace;
color: #ffffff;
padding: 15% 15% 5%;
}
p {
font-size: 1.8rem;
}
p:first-of-type {
margin-top: 100px;
}
h1 {
font-size: 200px;
position: absolute;
top: -5%;
left: 15%;
opacity: 25%;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
}
::-webkit-scrollbar {
width: 0;
background: transparent;
}
#progressBarContainer {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 10px;
background: rgba(255, 255, 255, 0.05);
}
#progressBar {
position: fixed;
top: 0;
left: 0;
width: 0;
background: linear-gradient(to top, violet, red);
height: 10px;
opacity: 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment