JSFiddle - React, Tailwind, and code Playground
HTML
<div data-type="percent" class="percent vertical-centered clearfix relative">
<div id="number-percentage" class="number yellow">
<div class="digit pull-left">
<p class="nbr">0</p>
<p class="nbr">1</p>
<p class="nbr">2</p>
<p class="nbr">3</p>
<p class="nbr">4</p>
<p class="nbr">5</p>
<p class="nbr">6</p>
<p class="nbr">7</p>
<p class="nbr">8</p>
<p class="nbr">9</p>
</div>
<div class="digit pull-left">
<p class="nbr">0</p>
<p class="nbr">1</p>
<p class="nbr">2</p>
<p class="nbr">3</p>
<p class="nbr">4</p>
<p class="nbr">5</p>
<p class="nbr">6</p>
<p class="nbr">7</p>
<p class="nbr">8</p>
<p class="nbr">9</p>
</div>
</div>
</div>
<div class="controls">
<input type="number" name="percent" min="1" max="99" id="myNumber" class="input" value="1" />
</div>
CSS
body {
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
font-size: 14px;
line-height: 1.42857;
color: #fff;
background:#000;
width: 600px;
height: 100%;
}
p {
display: block;
-webkit-margin-before: 0;
-webkit-margin-after: 0;
-webkit-margin-start: 0;
-webkit-margin-end: 0;
}
.pull-left {
float: left;
display: block;
}
div.yellow, .yellow div {
color: #ff0;
}
.digit {
-webkit-transition: all 1s ease-in-out 0s;
-khtml-transition: all 1s ease-in-out 0s;
-moz-transition: all 1s ease-in-out 0s;
-ms-transition: all 1s ease-in-out 0s;
-o-transition: all 1s ease-in-out 0s;
transition: all 1s ease-in-out 0s;
}
.percent .digit, .percent .after {
font-size: 200px;
line-height: 200px;
margin-top: -25px;
}
.percent .after {
margin-top: -28px;
}
#number-percentage {
height: 150px;
overflow: hidden;
}
.controls {
margin-top: 50px;
width:100%;
}
.controls div {
display: block;
float: left;
padding: 10px;
cursor: pointer;
text-decoration: underline;
}
.input {
margin-top:2px;
margin-left: 10px;
padding: 8px;
font-size: 16px;
width: 100px;
background-color: #111;
color: white;
border: 1px solid #333;
}
JavaScript
const runNumbers = function() {
let dataNumber = $('#myNumber')
.val()
.split('')
.forEach( function(e,i) {
$('.digit')
.eq(i)
.css('margin-top', (200*e +25)*-1);
});
}
$('#myNumber').change(runNumbers);