【发布时间】:2015-11-15 12:37:56
【问题描述】:
我一直在尝试放置一些基本的 CSS3 动画。目标是在按钮的单击事件上切换一个类,并根据添加的类为 div 设置动画。该代码非常适合 Firefox 中的第一次切换,但对于 Chrome 等其他浏览器和 Firefox 中的下一次迭代,转换是在眨眼之间切换的。请帮我找出问题所在。
片段:
$('button').click(function() {
$('div').toggleClass('clicked');
});
div {
background-color: #ccc;
height: 100px;
width: 100px;
transition-property: top, left;
transition-duration: 1s;
transition-timing-function: linear;
position: relative;
top: 0;
left: 0;
}
.clicked {
animation-name: clicked;
animation-duration: 1s;
animation-timing-function: linear;
animation-fill-mode: forwards;
}
@keyframes clicked {
0% {
top: 0;
left: 0;
}
100% {
top: 100px;
left: 100px;
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button type="button">Click Me!</button>
<div></div>
我还准备了一把小提琴here。
【问题讨论】:
-
我在 Ubuntu 15.04 上使用 Chrome,它似乎对我有用。如果我单击一次按钮,动画就会开始。如果我再次单击该按钮,则 div 将返回其原始位置。然后,如果我再次单击该按钮,动画将再次开始,依此类推。
-
你真的需要动画吗?即使没有直线运动也可以实现运动。我之前已经看到了 Chrome 的转换问题。您可以参考此线程以获取一些相关信息 - stackoverflow.com/questions/31806649/…(我将其链接只是因为我们发现在删除动画时过渡在 Chrome 中效果不佳 - 问题中也提到了这一点)。跨度>
-
@Mushtak:我使用的是 Windows 8.1,动画仅适用于 Firefox,从下一次迭代开始,动画并不像我提到的那样流畅,对于 Chrome/Opera,问题出现在第一次迭代中。跨度>
-
如果你可以避免动画,你可以像here一样在没有它的情况下达到同样的效果。
-
@Harry:感谢您的参考链接和小提琴。这就是我一直在寻找的。span>
标签: javascript css css-transitions css-animations css-transforms