JSFiddle - React, Tailwind, and code Playground
HTML
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<progress id="progressbar" value="0" max="100"></progress>
<br />
<br />
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<progress id="progressbar2" value="0" max="100"></progress>
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />Lorem
<br />Ipsum
<br />Dolor
<br />
<div id="horizontal">test</div>
CSS
progress {
top:150px;
}
#progress2 {
margin-top: 500px position: relative;
}
JavaScript
function isScrolledIntoView(elem) {
var docViewTop = $(window).scrollTop();
var docViewBottom = docViewTop + $(window).height();
var elemTop = $(elem).offset().top;
var elemBottom = elemTop + $(elem).height();
return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}
$(window).scroll(function () {
var s = $(window).scrollTop(),
d = $(document).height(),
c = $(window).height();
scrollPercent = (s / (d - c)) * 100;
var position = scrollPercent;
var p1 = $("#progressbar"), p2 = $("#progressbar2");
if(isScrolledIntoView(p1)) {
var val = 0, delay = 32, timer;
timer = setInterval(function() {
p1.attr('value', val++);
if(val>=position) clearInterval(timer);
},delay);
}
});