【发布时间】:2016-01-23 15:07:06
【问题描述】:
这段代码在 Chrome 上占用了我 40% 以上的 CPU。
body {
-webkit-animation: swapwall 20s infinite;
-webkit-animation-timing-function:linear;
}
@-webkit-keyframes swapwall {
0%{background-image:url(img1.png);}
20%{background-image:url(img2.png);}
25%{background-image:url(img3.png);}
45%{background-image:url(img4.png);}
50%{background-image:url(img5.png);}
70%{background-image:url(img6.png);}
75%{background-image:url(img7.png);}
95%{background-image:url(img8.png);}
100%{background-image:url(img9.png);}
}
我不明白为什么。代码有问题吗?我尝试在代码中添加硬件加速,但没有任何改变。有什么我可以做的吗?或者其他一些使用更少 CPU 的方式,我可以用我的 css 更改背景图像?
似乎我可以制作一个 GIF 来绕过它并将其用作背景,但我的图像是 1920x1080 并且所有 GIF 制造商都小于 500x500。我找到了一个创建 1500x844,但它没有过渡选项。
编辑:我设法从带有图像的视频创建了一个 15 秒的 GIF,但它仍然消耗大量 CPU 并且质量低得多。
Edit2:可能是 Chrome 问题?
body{background-color:#111111;}
#inlineContent {
pointer-events: none;
display: block !important;
}
#inlineContent:before {
position: fixed;
left: 0;
top: 0;
content: '';
width: 100%;
height: 100%;
background-image:
url(http://i.imgur.com/nncl4M8.png),
url(http://i.imgur.com/yc91VzR.png),
url(http://i.imgur.com/LjTST41.png);
animation: Falling 20s linear infinite;
-moz-animation: Falling 20s linear infinite;
-webkit-animation: Falling 20s linear infinite;
z-index: 102;
}
@keyframes Falling {
0% { background-position: 0 0, 0 0, 0 0; }
100% { background-position: 500px 1000px, 400px 400px, 300px 300px; }
}
@-moz-keyframes Falling {
0% {background-position: 0 0, 0 0, 0 0; }
100% {background-position: 500px 1000px, 400px 400px, 300px 300px;}
}
@-webkit-keyframes Falling {
0% { background-position: 0 0, 0 0, 0 0; }
100% { background-position: 500px 1000px, 400px 400px, 300px 300px; }
}
.Falling {
animation-name: Falling;
-moz-animation-name: Falling;
-webkit-animation-name: Falling;
}
http://scratchpad.io/impolite-harmony-1298
在 Chrome 和 Edge 上测试。 Chrome:大约 12% 的 CPU 使用率,Edge:大约 2% 的 CPU 使用率。
【问题讨论】:
-
我应该说——就我的目的而言,我不能使用任何 JS 或 HTML,只能使用 CSS。
-
好的,很高兴知道这一点。当我检查时,看起来它几乎都花在了重新绘制复合层上。而且实际上显示的元素有多大似乎并不重要。
标签: css google-chrome animation cpu-usage