1

我遇到了内存问题,使用-webkit-animation.

原则

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

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

问题

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

我注意到我在使用-moz-animationFirefox 时没有问题,这个问题只发生在 Chrome 上,使用-webkit-.

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

代码

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;} }
...

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

有什么方法可以让这段代码工作吗?

编辑
我更新了我的问题,按照我最近的发现:

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

2 回答 2

1

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

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

第二个 div 的动画效果相同,但背景均匀

于 2013-10-20T19:43:44.393 回答
0

这确实是一个 webkit 错误,多年来不再存在。

于 2020-04-28T21:52:27.193 回答