【发布时间】:2018-05-08 15:50:09
【问题描述】:
我写了一段代码让卡片淡出,然后在点击后设置为display: none;,这样它就不会在淡出后显示在DOM中。虽然animation-fill-mode: forwards; 有效,但只有displayelement 上的更改似乎没有效果;如果您将鼠标悬停在该区域上,则光标仍在那里,并且该元素仍显示在开发工具中。有没有办法确保display: none;property 设置正确?
HTML <div></div>
CSS
body {
background: black;
margin-top: 4rem;
}
div {
display: block;
background: red;
width: 200px;
height: 200px;
margin: 0 auto;
}
.hidden {
animation: hiddenTransition 300ms ease-in;
animation-fill-mode: forwards; // DOESN'T WORK :C
will-change: opacity, transform, display;
cursor: pointer;
}
@keyframes hiddenTransition {
0% {
opacity: 1;
transform: none;
display: block;
}
99% {
opacity: 0;
transform: translateY(20%);
display: block;
}
100% {
opacity: 0;
transform: translateY(20%);
display: none;
}
}
JS
var square = document.querySelector("div");
square.addEventListener("click", function(){
this.classList.toggle("hidden");
});
【问题讨论】:
-
我认为你需要在动画完成后单独触发 display none 。查看this similar question 的答案,向您展示如何做到这一点。
标签: javascript html css animation css-animations