<p class="cta">Scroll me</p>
<div class="event-counter">
<div class="box">
<p>Number of scroll events</p>
<span class="output">0</span>
</div>
</div>
body {
height: 5000vh;
font-family: sans-serif;
line-height: 1.5;
color: #212121;
background-color: #f5f5f5;
}
.cta {
display: flex;
justify-content: center;
align-items: center;
font-size: 20px;
}
.cta::before,
.cta::after {
content: "\2193";
margin-left: 4px;
margin-right: 4px;
}
.event-counter {
position: sticky;
top: 100px;
display: flex;
justify-content: center;
}
.box {
display: inline-flex;
flex-direction: column;
align-items: center;
padding: 12px;
border: 1px solid #03a9f4;
border-radius: 4px;
}
.event-counter p {
margin: 0;
font-size: 16px;
}
.event-counter span {
font-size: 48px;
font-family: monospace;
}
const output = document.querySelector(".output");
let scrollEventCounter = 0;
document.addEventListener("scroll", () => {
scrollEventCounter += 1;
output.textContent = scrollEventCounter;
});
View Compiled
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.