这是一个漂亮的数字代码。一整天我都想知道并试图修改代码以使其成为我想要的,但直到现在还没有成功!
如果您使用两位或更多位数字,则代码会创建单独的黑色方块来保存每个数字(运行代码片段查看),但我只想要一个正方形作为容器来保存多位数字。所以如果我们有一个像10这样的两位数,数字代码应该是这样的:

下一步应该是这样的:

我不想要那些像这样移动两位数的并行动画(只需要单个动画,而不是两个):

这是代码:
let counters = document.getElementsByClassName('number-ticker');
let defaultDigitNode = document.createElement('div');
defaultDigitNode.classList.add('digit');
for (let i = 0; i < 11; i++) {
defaultDigitNode.innerHTML += i + '<br>';
}
[].forEach.call(counters, function(counter) {
let currentValue = 10;
let digits = [];
generateDigits(currentValue.toString().length);
setValue(currentValue);
setTimeout(function() {
setValue(8);
}, 2000);
setTimeout(function() {
setValue(7);
}, 5000);
function setValue(number) {
let s = number.toString().split('').reverse().join('');
let l = s.length;
if (l > digits.length) {
generateDigits(l - digits.length);
}
for (let i = 0; i < digits.length; i++) {
setDigit(i, s[i] || 0);
}
}
function setDigit(digitIndex, number) {
digits[digitIndex].style.marginTop = '-' + number + 'em';
}
function generateDigits(amount) {
for (let i = 0; i < amount; i++) {
let d = defaultDigitNode.cloneNode(true);
counter.appendChild(d);
digits.unshift(d);
}
}
});
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Number Ticker</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="stylesheet" href="number-ticker.css">
</head>
<body>
<div class="container">
<div class="number-ticker" data-value="0"></div>
</div>
<script src="number-ticker.js"></script>
</body>
</html>
一只萌萌小番薯
潇湘沐
天涯尽头无女友
随时随地看视频慕课网APP
相关分类