昨天我問了一個問題(original question),這個問題很快得到了回答,但即使找到了解決方案,我也不明白爲什麼這樣工作。我可以複製這個解決方案,用於我需要做的其他事情,但在繼續之前,我想了解爲什麼它按照它的方式工作。爲什麼我們需要在JavaScript中多次運行時清除動畫?
所以基本上我做了三個互相調用的函數。第一個在「animationend」中調用第二個,第二個在「animationend」中調用第三個,最後第三個函數稱爲第一個重新開始循環 - 但我的原始代碼雖然缺乏;
document.getElementById("rightBoxTwo").style.animation = "none";
第三個函數需要按順序調用第一個函數,以便循環重新開始。如果在每個函數中沒有上面的代碼,那麼這三個函數只能工作一次,然後停止。 StackOverFlow用戶的答案; ScientiaEtVeritas給我包括一個CodePen其中有我需要的工作示例和簡要說明
所以,我認爲有以下幾個選項:什麼可以工作,是你 重置
rightBox
的動畫在功能runTwo
與animation: none
。如果您將scrollTextTwo 10s
指定回rightBox
它應該重新開始。等同於其他人。
因此,最後我的問題是爲什麼動畫需要清除,爲什麼.style.animation = "none";
完成這個?
下面是一個解決方案後,工作代碼,提出...
<body onload="runOne()">
function runOne() {
var x = document.getElementById("rightBox");
x.addEventListener("animationend",runTwo);
document.getElementById("rightBox").style.animation = "scrollTextTwo 10s";
document.getElementById("rightBoxTwo").style.animation = "none";
}
function runTwo() {
var x = document.getElementById("rightBoxTwo");
x.addEventListener("animationend",runThree);
document.getElementById("rightBoxTwo").style.animation =
"scrollTextTwo 10s";
document.getElementById("rightBoxThree").style.animation = "none";
}
function runThree() {
var x = document.getElementById("rightBoxThree");
x.addEventListener("animationend",runOne);
document.getElementById("rightBoxThree").style.animation =
"scrollTextTwo 10s";
document.getElementById("rightBox").style.animation = "none";
}
這就像開燈。它的開關已經處於開啓狀態;您需要將其關閉,然後才能再次打開。 – Malk
這就像填充一杯水。如果杯子已滿,您需要先清空杯子,然後才能再次裝滿杯子。 – blex