只用一个动画类来回无缝过渡?

时间:2015-06-03 03:25:36

标签: javascript jquery html css

我想使用一个类来触发动画,并在删除该类后重新反映该动画。

很难想象,所以我创建了CodePen of where I'm at currently.

您注意到.zoom#box移除后,#box就会消失。它没有反向动画,这最终是目标。

如何只使用一个动画类来无缝地来回转换?通常我可能会使用过渡,但你无法通过变换进行过渡。

1 个答案:

答案 0 :(得分:2)

尝试添加.zoomout classcss动画,利用.removeClass()class .toggleClass()



window.onclick = function() {
  if (!$("#box").is(".zoom")) {
    $("#box").removeClass("zoomout")
      .toggleClass("zoom");
  } else {
    $("#box").toggleClass("zoom zoomout");
  }
};

#box {
  width: 256px;
  height: 256px;
  background: black;
  opacity: 0;
  display: block;
  transform: scale(1.15, 1.15);
  margin: 16px 0px;
}
.zoom {
  animation: zoom 500ms;
  animation-fill-mode: both;
  -moz-animation: zoom 500ms;
  -moz-animation-fill-mode: both;
  -webkit-animation: zoom 500ms;
  -webkit-animation-fill-mode: both;
}
.zoomout {
  animation: zoomout 500ms;
  animation-fill-mode: both;
  -moz-animation: zoomout 500ms;
  -moz-animation-fill-mode: both;
  -webkit-animation: zoomout 500ms;
  -webkit-animation-fill-mode: both;
}
@keyframes zoom {
  0% {
    opacity: 0;
    transform: scale(1.15);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}
@-moz-keyframes zoom {
  0% {
    opacity: 0;
    transform: scale(1.15);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}
@-webkit-keyframes zoom {
  0% {
    opacity: 0;
    transform: scale(1.15);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}
@keyframes zoomout {
  0% {
    opacity: 1;
    transform: scale(1.15);
  }
  100% {
    opacity: 0;
    transform: scale(1);
  }
}
@-moz-keyframes zoomout {
  0% {
    opacity: 1;
    transform: scale(1.15);
  }
  100% {
    opacity: 0;
    transform: scale(1);
  }
}
@-webkit-keyframes zoomout {
  0% {
    opacity: 1;
    transform: scale(1.15);
  }
  100% {
    opacity: 0;
    transform: scale(1);
  }
}
body {
  margin: 0;
  text-align: center;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -60%);
  -moz-transform: translate(-50%, -60%);
  -webkit-transform: translate(-50%, -60%);
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<div id="box"></div>
Click the document to toggle the box.
&#13;
&#13;
&#13;

codepen http://codepen.io/anon/pen/vOxxKE