HTML
<!DOCTYPE html>
<html lang=”en”>
<head>
<meta charset=”UTF-8″>
<meta name=”viewport” content=”width=device-width, initial-scale=1.0″>
<link rel=”shortcut icon” type=”image/x-icon” href=”/favicon.ico”>
<link rel=”stylesheet” href=”https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css” integrity=”sha256-h20CPZ0QyXlBuAw7A+KluUYx/3pK+c7lYEpqLTlxjYQ=” crossorigin=”anonymous” />
<link rel=”stylesheet” href=”style.css”>
<title>Animated Counter</title>
</head>
<body>
<header>
<div class=”container”>
<h1>Animated Counter</h1>
</div>
</header>
<section class=”counters”>
<div class=”container”>
<div>
<i class=”fab fa-youtube fa-4x”></i>
<div class=”counter” data-target=”60000″>0</div>
<h3>Subscribers</h3>
</div>
<div>
<i class=”fab fa-twitter fa-4x”></i>
<div class=”counter” data-target=”15000″>0</div>
<h3>Followers</h3>
</div>
<div>
<i class=”fab fa-facebook fa-4x”></i>
<div class=”counter” data-target=”9000″>0</div>
<h3>Likes</h3>
</div>
<div>
<i class=”fab fa-linkedin fa-4x”></i>
<div class=”counter” data-target=”5000″>0</div>
<h3>Connections</h3>
</div>
</div>
</section>
<script src=”script.js”></script>
</body>
</html>
JavaScript
const counters = document.querySelectorAll(‘.counter’);
const speed = 200;
counters.forEach(counter => {
const updateCount = () => {
const target = +counter.getAttribute(‘data-target’);
const count = +counter.innerText;
const inc = target / speed;
if(count < target) {
counter.innerText = Math.ceil(count + inc);
setTimeout(updateCount, 519);
} else {
count.innerText = target;
}
}
updateCount();
})
