JSFiddle - React, Tailwind, and code Playground
HTML
<div class="number">0</div>
CSS
body {
height: 2000px;
}
.number {
margin-top: 1000px;
}
JavaScript
var number = document.querySelector('.number'),
numberTop = number.getBoundingClientRect().top,
start = 0, end = 300;
window.addEventListener('scroll', function onScroll() {
if(window.pageYOffset > numberTop - window.innerHeight / 2) {
this.removeEventListener('scroll', onScroll);
var interval = setInterval(function() {
number.innerHTML = ++start;
if(start == end) {
clearInterval(interval);
}
}, 5);
}
});