console
const counters = document.querySelectorAll('.counter');
counters.forEach(counter => {
const target = counter.getAttribute('data-target');
const increment = parseInt(target / 50);
let i = 0;
const counterPlus = () => {
i += increment;
counter.textContent = i;
if (i<target) {
requestAnimationFrame(counterPlus);
} else {
counter.textContent = target;
}
}
requestAnimationFrame(counterPlus);
})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="//at.alicdn.com/t/font_2989232_68kjyq6l7bo.css" rel="stylesheet">
<link rel="stylesheet" href="style.css" />
<title>Increment Counter</title>
</head>
<body>
<div class="jiaqicoder">
<img src="https://gitee.com/zyxbj/image-warehouse/raw/master/pics/pic.png" alt="">
</div>
<div class="counter-container">
<i class="iconfont icon-weibo1"></i>
<div class="counter" data-target="12200">0</div>
<span>微博粉丝数</span>
</div>
<div class="counter-container">
<i class="iconfont icon-bilibili-fill"></i>
<div class="counter" data-target="14310">0</div>
<span>B站订阅数</span>
</div>
<div class="counter-container">
<i class="iconfont icon-douyin"></i>
<div class="counter" data-target="12345">0</div>
<span>抖音粉丝数</span>
</div>
<script src="script.js"></script>
</body>
</html>
*{
margin: 0;
padding: 0;
box-sizing: border-box;
}
body{
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color:#8e44ad;
color: white;
gap: 100px;
}
.counter-container{
display: flex;
flex-direction: column;
align-items: center;
gap: 20px;
}
.counter-container i{
font-size: 68px;
}
.counter-container .counter{
font-size: 48px;
letter-spacing: 3px;
font-weight: bold;
}
.counter-container span{
font-size: 20px;
letter-spacing: 5px;
}
.jiaqicoder{
position: absolute;
left: 20px;
top: 20px;
}
.jiaqicoder img{
width: 200px;
}