Webkit内存限制与-webkit-animation

时间:2013-10-19 21:10:58

标签: css3 animation webkit

我使用-webkit-animation面临内存问题。

原理

我想为渐变背景设置动画。由于它们在关键帧中无法制作动画,因此我将每个背景设置为不同的div,并且我正在使用那些div不透明度和z-index

  • .item01从0%到4%可见,开始淡出0%
  • .item02可见0%至8%,开始淡出4%(及.item01下)
  • .item03可见0%至12%,开始淡出8%(及.item02下)
  • ...

问题

只有16个第一个动画才有效,17日我们只看到一个空白div,直到重新启动所有动画。

我注意到我使用-moz-animation和Firefox时没有遇到此问题,问题只发生在使用-webkit-的Chrome上。

根据您的视口大小,您将能够看到更多或更少的动画。

代码

HTML

<div class="item item-01">ITEM 01</div>
<div class="item item-02">ITEM 02</div>
<div class="item item-03">ITEM 03</div>
...

CSS

.item {
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 100%;
  opacity: 1;
}
.item-01 { 
  background: red; 
  z-index: 100; 
  -webkit-animation: item01 30s linear infinite;
}
.item-02 { 
  background: blue; 
  z-index: 96; 
  -webkit-animation: item02 30s linear infinite;
}
.item-03 { 
  background: red; 
  z-index: 92; 
  -webkit-animation: item03 30s linear infinite;
}
...
@-webkit-keyframes item01 { 0%, 100% {opacity: 1;}  4%, 99.999% {opacity: 0;} }
@-webkit-keyframes item02 { 4%, 100% {opacity: 1;}  8%, 99.999% {opacity: 0;} }
@-webkit-keyframes item03 { 8%, 100% {opacity: 1;} 12%, 99.999% {opacity: 0;} }
...

出于示例目的,我用简单的红色/蓝色替换渐变背景。

以下是完整代码的JSFiddle

任何使这段代码有效的方法吗?

修改
在我最近发现之后,我更新了我的问题:

  • 显示的动画数量取决于您的操作系统(Ubuntu似乎比Win7有更好的效果)
  • 显示的动画数量取决于您的视口大小

2 个答案:

答案 0 :(得分:1)

我认为解决方案是只有2个div,每个div都有一个动画。

第一个div的动画加载背景,过渡到不透明度0,更改背景,过渡到不透明度1,变为oapcity 0,更改背景等等。

第二个div的动画做同样的事情,但背景为偶数

答案 1 :(得分:0)

这确实是一个webkit错误,已经存在多年了。