JSFiddle - React, Tailwind, and code Playground
by Sedbol
HTML
<div class="progress">
<progress max="100" value="0"></progress>
<div class="progress-value"></div>
<div class="progress-bg"><div class="progress-bar"></div></div>
</div>
SCSS
@for $i from 0 through 100 {
.progress progress[value="#{$i}"]
{
& + .progress-value:before { content : '#{$i}%' }
& ~ .progress-bg .progress-bar { width: $i * 1% }
}
}
.progress
{
font: 12px Arial, Tahoma, sans-serif;
position: relative;
overflow: hidden;
progress
{
position: absolute;
width: 0;
height: 0;
overflow: hidden;
left: -777px;
}
}
.progress-value
{
color: #333;
display: block;
line-height: 21px;
text-align: center;
}
.progress-bg
{
background: #e6e9ed;
position: relative;
height: 8px;
border-radius: 5px;
overflow: hidden;
}
@-webkit-keyframes progress_bar {
0% {
background-position: 0 0;
}
100% {
background-position: -40px 0;
}
}
@-moz-keyframes progress_bar {
0% {
background-position: 0 0;
}
100% {
background-position: -40px 0;
}
}
@keyframes progress_bar {
0% {
background-position: 0 0;
}
100% {
background-position: -40px 0;
}
}
.progress-bar
{
overflow: hidden;
background: #ac92ec;
height: 100%;
position: absolute;
top: 0;
left: 0;
width: 0;
-webkit-transition: width 1s linear;
-moz-transition: width 1s linear;
-ms-transition: width 1s linear;
transition: width 1s linear;
:after
{
-webkit-animation: progress_bar 0.8s linear infinite;
-moz-animation: progress_bar 0.8s linear infinite;
-ms-animation: progress_bar 0.8s linear infinite;
-o-animation: progress_bar 0.8s linear infinite;
animation: progress_bar 0.8s linear infinite;
background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
background-image: -o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
background-image: linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent...
JavaScript
function random(min, max) {
var rand = min + Math.random() * (max + 1 - min);
rand = Math.floor(rand);
return rand;
};
setTimeout(function() {
document.querySelector('progress').value = '12';
}, 0);