Animation 带有CSS动画的媒体查询

Animation 带有CSS动画的媒体查询,animation,css,media-queries,css-animations,Animation,Css,Media Queries,Css Animations,我在这里尝试一些繁重的CSS3内容,遇到了一些问题,我希望可以解决这些问题: 1-我有一个盒子,当你加载页面时可以滑入。比如说: #box { animation-duration: 3.5s; animation-name: slidein; } @keyframes slidein { from { top: 0; } to { top: 100%; }} 但是,在我的媒体查询中,由于一些大小调整,我需要将其修改为: @media only screen and

我在这里尝试一些繁重的CSS3内容,遇到了一些问题,我希望可以解决这些问题:

1-我有一个盒子,当你加载页面时可以滑入。比如说:

#box {
    animation-duration: 3.5s;  
    animation-name: slidein;
}

@keyframes slidein {  from { top: 0; }  to { top: 100%; }}
但是,在我的媒体查询中,由于一些大小调整,我需要将其修改为:

@media only screen and (min-width: 768px) {
    @keyframes slidein {  from { top: 0; }  to { top: 80%; }}
}
我想我可以保持动画名称不变,只需在其中一个@media查询中重新定义关键帧,但这似乎不起作用。为什么?(是的,我设置了正确的前缀)

2-我的上述解决方案是为每个尺寸定义不同的动画:

#box {
    animation-duration: 3.5s;  
    animation-name: slidein;
}

@keyframes slidein {  from { top: 0; }  to { top: 100%; }}
@keyframes slidein-low {  from { top: 0; }  to { top: 80%; }}

@media only screen and (min-width: 768px) {
    #box { 
        animation-name: slidein-low;
   }
}

但是,现在调整站点大小后,动画将在点击其中一个媒体查询后重新开始。我只希望动画播放一次(无论大小,甚至之后调整大小),就这样。因此,除非有解决方案,否则我认为这是因为当检测到一个查询时,它有点“重新启动”它的CSS?

我假设您正在为可能具有1024最大宽度的较小屏幕执行最小宽度?所以也可以试着把它放进去:

@media only screen and (min-width: 768px) and (max-width:1024px) {
    #box { 
        animation-name: slidein-low;
   }
}
甚至可以尝试将动画构造也放入查询中:

@media only screen and (min-width: 768px) and (max-width:1024px) {

    @keyframes slidein-low {  from { top: 0; }  to { top: 80%; }}

    #box { 
        animation-name: slidein-low;
   }
}
我相信您已经访问过此网站,但如果您没有,这里有一个很好的媒体查询参考:


从我的实验中,我发现Safari 5(适用于桌面和iOS)肯定会以您打算使用其中一种解决方案的方式呈现您的页面。另一方面,如果将@moz关键帧或-moz动画规则放置在@media块中,Firefox 9似乎不遵守它们(并且都忽略W3C@关键帧和非供应商特定的动画属性)