这种效果可以通过切换一个类来实现,我所做的是使用translateY使最后一个数字始终可见,当我添加另一个div时,切换到另一个使最后一个数字可见的类,然后删除该类。
function createNum() {
let numb = document.querySelector(".numb_list");
let rand = Math.floor(Math.random() * 6);
let newNum = document.createElement("div");
newNum.innerText = rand;
numb.classList.toggle("switch");
numb.appendChild(newNum);
setTimeout(function() {
numb.classList.toggle("switch");
},1)
}
.numb_container {
height: 21px;
overflow: hidden;
}
.numb_list {
transform: translateY(calc(-100% + 21px));
transition: transform 0.2s linear;
}
.switch {
transform: translateY(calc(-100% + 42px));
transition: none;
}
<div class="numb_container">
<div class="numb_list">
<div>1</div>
</div>
</div>
<button class="add" onclick="createNum()">Add to number</button>