让动画处于结束状态JS / CSS

时间:2015-12-10 13:26:05

标签: javascript css-animations

这是我的问题:

我用JS和CSS开发一个小动画,我想在动画结束时停止。现在,我的动画回到了他的基本状态。



var
	btn = document.getElementById("btn");
	anim = document.getElementById("anim");
  
// button click event
btn.addEventListener("click", ToggleAnimation, false);

// apply all webkit events
anim.addEventListener("webkitAnimationStart", AnimationListener);
anim.addEventListener("webkitAnimationIteration", AnimationListener);
anim.addEventListener("webkitAnimationEnd", AnimationListener);

// and standard events
anim.addEventListener("animationstart", AnimationListener);
anim.addEventListener("animationiteration", AnimationListener);
anim.addEventListener("animationend", AnimationListener);

// handle animation events
function AnimationListener(e) {
	if (e.type.toLowerCase().indexOf("animationend") >= 0) {
		ToggleAnimation();
	}
}

// start/stop animation
function ToggleAnimation(e) {
	var on = (anim.className != "");
	anim.className = (on ? "" : "enable");
};

#anim
{
	display: block;
	width: 150px;
  height:150px;
	background-color: #060;
}

#anim.enable
{
	-webkit-animation: flash 1s ease;
	animation: flash 1s ease;
  animation-fill-mode: forwards;
  -webkit-animation-fill-mode: forwards;
}

/* animation */
@-webkit-keyframes flash {
	50% { margin-top:50px; }
}

@keyframes flash {
	50% { margin-top:50px; }
}

<button id="btn">
  Launch animation
</button>
<p><a id="anim" href="#"></a></p>
&#13;
&#13;
&#13;

这是我的FIDDLE。我认为问题在于功能&#34; ToggleAnimation&#34;但我找不到什么。

提前致谢并度过了愉快的一天。

Azyme

1 个答案:

答案 0 :(得分:0)

我想我已经实现了你想要的 - 改变动画以具有开始和结束状态(0%和100%)并使用jquery来添加类&#34;启用&#34;而不是切换它

CSS

@-webkit-keyframes flash {
  0% { margin-top: 0}
  100% { margin-top:50px; }
}

@keyframes flash {
  0% { margin-top: 0}
  100% { margin-top:50px; }
}

jquery的

$('#btn').click(function(){
   $('#anim').addClass("enable");
})

希望有用,制作了一个代码http://codepen.io/anon/pen/vLLKoZ