这适用于Chrome,但不适用于Firefox (以下是online demo):
HTML
<div class="box"></div>
CSS
.box {
background-color:blue;
width:100px;
height:100px;
margin: 0 auto;
transform: translate(-200px);
animation-name: test;
animation-duration: 3s;
animation-fill-mode: forwards;
transition: all 0.25s ease;
}
.box:hover {
border-radius: 100%;
}
@keyframes test {
100% {
transform: translate(0px);
}
}
如果我删除了转换,它可以正常工作。似乎转换在被悬停时激活时会移除填充模式设置的状态:转发。
在firefox中有没有解决方法?
答案 0 :(得分:1)
好吧,我为起点0%
添加了关键帧以使其正常工作:
@keyframes test{
0% {
transform: translate(-200px);
}
100% {
transform: translate(0px);
}
}
使用上述内容,您可以从transform
元素中删除.box
属性。
此外,对于旧版本的网络浏览器,请考虑使用-webkit-
和-moz-
等供应商前缀,... @keyframes
以及其他CSS3属性。
PS:我用FF 9.0.1测试了这个演示。此问题可能仅出现在早期版本的Web浏览器中。事实上,网络浏览器试图修复你的坏编码,但只有聪明人会赢![/ sub>
<强> WORKING DEMO 强>
为了解决渲染问题(动画开始时),您需要将transition-property
从all
更改为您真正想要的特定属性。 (在这种情况下为border-radius
):
.box{
animation-name: test;
animation-duration: 3s;
animation-fill-mode: forwards;
transition: border-radius 0.25s ease;
}
问题是因为animation
属性transition
和transform
之间存在冲突。
<强> UPDATED DEMO 强>
答案 1 :(得分:0)
它适用于Firefox。我把你的例子放到JSFiddle中,正如你在问题中所展示的那样,它对我有用。