【发布时间】:2018-08-30 22:37:33
【问题描述】:
我正在构建一个简单的旋转器,它可以为网站旋转三条建议。我希望它淡出/淡入并添加/删除类来做到这一点。在 JavaScript 调试器中,它运行良好,因为它有时间单步执行所有调用,但在实际执行中,它非常不稳定。我理解这样做是因为脚本只关心添加类,它不关心完成类中的转换,但我需要知道如何让脚本完全完成类中的转换。这是 JavaScript:
function rotateAdvice() {
let nextAdvice;
const currentAdviceCont = document.querySelector(".advice-show");
const currentAdvice = currentAdviceCont.id.slice(-1);
if (currentAdvice >= 2) {
nextAdvice = document.getElementById("advice-0");
} else {
nextAdvice = "advice-"+(parseInt(currentAdvice) + 1);
nextAdvice = document.getElementById(nextAdvice);
}
currentAdviceCont.classList.add("advice");
currentAdviceCont.classList.remove("advice-show");
currentAdviceCont.classList.add("no-display");
nextAdvice.classList.remove("no-display");
nextAdvice.classList.add("advice-show");
}
// called through this:
setInterval(rotateAdvice, 4000);
以下是三个 css 类:
.advice {
opacity: 0;
transition: 1s opacity;
}
.advice-show {
opacity: 1;
transition: 1s opacity;
}
.no-display {
display: none;
visibility: hidden;
}
【问题讨论】:
-
代替setInterval,为transitionend添加一个事件监听器,它在触发时调用rotate方法。
-
查看 JavaScript 事件
transitionEnd以按顺序触发您的类。
标签: javascript css css-transitions