【发布时间】:2021-05-29 01:28:06
【问题描述】:
当我们点击这个添加按钮时,我们将添加一个新的立方体,它会立即掉落,但是如果我们很快点击它,将会有太多的立方体掉落。我想限制动画掉落方块的总数。
例如,即使我们非常快速地点击按钮并在页面中添加了 10 个立方体,也只有两个立方体掉落,其他的必须等到它们完成。
例如,当立方体 1 和立方体 2 完成时,第 3 和第 4 个立方体将开始下降。
我在想也许我们可以有一个动画立方体总数的全局变量,++ 和 -- 当一个新的立方体开始和结束动画时,使用 setInterval 来检查变量是否小于 2,但是这个无法根据立方体创建顺序制作动画。我可以知道如何解决这个问题吗?非常感谢!
var btn = document.getElementById('add');
var container = document.getElementById('cubes-container');
var cubeId = 0;
btn.addEventListener('click', addCube);
var currentAnimateCount = 0;
function dropCube(cube) {
var pos = 0;
let intervalId = setInterval(function() {
if (pos == 200) {
clearInterval(intervalId);
} else {
pos++;
cube.style.top = pos + "px";
}
}, 1);
}
function addCube() {
let cube = document.createElement('div');
let cubeContainer = document.createElement('div');
cube.className = 'cube';
cube.id = cubeId;
cube.innerHTML = cube.id;
cubeId++;
cubeContainer.className = 'cube-container';
cubeContainer.append(cube);
container.append(cubeContainer);
let pos = 0;
dropCube(cube)
}
#cubes-container {
display: grid;
grid-template-columns: repeat(10, 1fr);
}
.cube-container {
position: relative;
height: 30px;
}
.cube {
width: 30px;
height: 30px;
background-color: orange;
text-align: center;
display: grid;
align-items: center;
justify-items: center;
position: absolute;
}
<button id="add">add new</button>
<div id="cubes-container">
</div>
【问题讨论】:
-
嗨,您愿意等待多少个立方体,并且您是否会在某个时候移除它们(删除它们)?您可能会发现查看 CSS 动画也很有帮助。
-
@AHaworth @A Haworth 嗨!非常感谢你的回复!我希望最多只有两个立方体在动画,所有其他的都在等待。如果我很快点击添加按钮,我可能会同时添加 10 个立方体,但只有前两个在下降,它们完成后,立方体 3 和 4 开始下降,然后在立方体 3 和 4 完成后,立方体 5 和 6开始下降。即使在我不断单击添加按钮的同时,它们也始终遵循此顺序。我现在不打算删除它们。
-
不要让它持续太久,否则如果您继续创建但不删除,您可能会用完存储(虽然需要很长时间)。
标签: javascript css animation