我正在尝试创建一个 CSS 动画,当用户单击一个元素时,它会向右移动,然后当他们再次单击它时,它会向左移动。我遇到的问题是它引入了闪烁。我知道原因,但我不确定修复它的最佳方法。我想要这个问题的最优雅的解决方案。
我在这里设置了一个 jsFiddle(仅限 WebKit):http: //jsfiddle.net/4Ad5c/2/
CSS:
.animateRight{
-webkit-animation: goRightLeft 1s;
-webkit-animation-fill-mode: forwards;
}
.animateLeft{
-webkit-animation: goRightLeft 1s;
-webkit-animation-fill-mode: backwards;
-webkit-animation-direction: reverse;
}
@-webkit-keyframes goRightLeft {
0%{margin-left: 0px;}
100%{margin-left: 100px;}
}
JavaScript:
this.animateBox = function(className){
var box = document.getElementsByClassName('box')[0];
box.className = "box";
setTimeout(function(){
box.className = "box " + className;
},1);
};
当您单击 Animate Right 时,它会按预期工作,但是当您单击 Animate Left 时,它会向左闪烁,然后按预期进行动画处理。原因是您必须删除该类并添加另一个类才能使动画再次运行,但我不知道使其正常工作的最佳方法。我想我可以在删除具有当前状态的上一个动画时添加一个类,但这对我来说似乎是错误的。
谢谢您的帮助!