我一直在试图让CSS3过渡效果在Chrome和Safari中运行,没有运气。正如你在下面的代码示例中看到的,我使用伪类选择器触发一个关键帧动画,在这种情况下,它将div从一个位置移动到另一个位置。只要你点击另一个链接的div消失(它跳回到原来的位置)。Chrome和Safari忽略我的-webkit-transition-
为了防止这种即时跳跃,我添加了一个过渡效果到div的原始状态。通过这样做,过渡将会启动,div会“滑”回顶端,至少如果您使用的是Firefox或Opera。 Chrome和Safari似乎忽略了过渡效果,我不知道为什么?
我从来没有像以前那样合并过渡和动画,所以我可能会错过什么?
关于我如何使它在Chrome和Safari中工作的任何想法(最好使用CSS3)?
我使用的是Mac OS X,从Chrome 21,火狐14.0.1和Opera 12.01
这里有一个jsFiddle和这里的中的jsfiddle示例中使用的代码:
的Html
<a href="#id1">One</a>
<a href="#id2">Two</a>
<div id="id1">
Hello hello
</div>
CSS
#id1 {
position: absolute;
top: -100px;
left: 100px;
width: 100px;
height: 100px;
/* Not working */
-webkit-transition-timing-function: linear;
-webkit-transition-duration: 0.5s;
/* Working */
-moz-transition-timing-function: linear;
-moz-transition-duration: 0.5s;
/* Working */
-o-transition-timing-function: linear;
-o-transition-duration: 0.5s;
}
#id1:target {
-webkit-animation: down 0.5s ease-in forwards;
-moz-animation: down 0.5s ease-in forwards;
-o-animation: down 0.5s ease-in forwards;
}
@-webkit-keyframes down {
0% { top: -100px; left: 100px; }
100% { top: 200px; left: 100px; }
}
@-moz-keyframes down {
0% { top: -100px; left: 100px; }
100% { top: 200px; left: 100px; }
}
@-o-keyframes down {
0% { top: -100px; left: 100px; }
100% { top: 200px; left: 100px; }
}
感谢您对平滑过渡建议的回答和+1,以及我如何在代码中节省空间。 – 2012-08-09 20:44:24
另一个提示。如果您有很多供应商特定的CSS,请考虑使用[前缀免费](http://leaverou.github.com/prefixfree/)。这是一个漂亮的小脚本,可以让你在没有前缀的情况下编写代码,并在客户端稍后添加它们。在此特定情况下保存12行代码。 – 2012-08-09 20:47:47