我有以下CSS过渡-



fadeinout-animate {
    width:200px;
    height: 200px;
    background: red;
    -webkit-animation: fadeinout 4s linear forwards;
    animation: fadeinout 4s linear forwards;
    opacity: 0;
}

@-webkit-keyframes fadeinout {
  50% { opacity: 1; }
}

@keyframes fadeinout {
  50% { opacity: 1; }
}
@keyframes fadeinout {
  100% { opacity: 0;display:none; }
}





但是,当我将此类添加到Angular模板中的div时,显示不起作用,但保留200 * 200的空白。 (如果我检查元素,我仍然会看到仅红色背景消失了,但是在浏览器中手动应用显示无内联样式会隐藏或删除div)如果我将height:0设置为div会关闭,但会影响行为。我如何解决它?

最佳答案

要添加到@Highdef答案,。

如果您不介意添加一些Javascript,则可以侦听动画结束事件,并手动设置不显示。



const e = document.getElementById("a");
e.addEventListener("animationend", (ev) => {
  if (ev.type === "animationend") {
    e.style.display = "none";
  }
}, false);

#a {
  width: 200px;
  height: 200px;
  background: red;
  -webkit-animation: fadeinout 4s linear forwards;
  animation: fadeinout 4s linear forwards;
  opacity: 0;
}

@keyframes fadeinout {
  50% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

<div style="border:1px solid black;width:200px;">
  <div id="a">
  </div>
</div>

10-02 15:19