单击一个元素first会添加一个样式animation = "move 5s";。如何callback在css动画结束时重置样式?您可以以具有样式的类的形式抛出修饰符,或者通过属性然后重置它,但是如何获取它callback?
PS:为了清楚起见,我通过setTimeout.
function getId(id) {
return document.getElementById(id);
}
function getStyle(elem) {
return getComputedStyle(elem);
}
function setStyle(elem) {
return elem.style;
}
let firstElem = getId("first");
firstElem.addEventListener('click', function() {
setStyle(firstElem).animation = "move 5s";
setTimeout(function() {
setStyle(firstElem).animation = "none";
}, 5000);
});
body {
background: #3B3738;
padding: 10px;
}
.elem {
position: relative;
text-align: center;
font-weight: bold;
font-size: 18px;
text-transform: uppercase;
padding: 20px;
background: #512;
width: 150px;
box-shadow: inset 0 0 0 1px #000;
//animation: move 5s;
left: 0;
margin-bottom: 10px;
&:not(:last-child) {
margin-bottom: 10px;
}
}
@keyframes move {
50% {
left: 100%;
transform: translateX(-100%);
}
}
<div class="elem" id="first">First</div>
动画完成后会触发两个事件,您可以绑定到它们。
1)
transitionend- 当 CSS 属性完成执行时触发transition2)
animationend- 分别在 CSS 属性完成执行时触发animation。为了能够
callback在函数完成后调用,可以使用requestAnimationFrame. 例如:阅读更多关于 js 动画的教程,更多信息请点击这里和这里。