gpt4 book ai didi

css - 如何使用位置为 :relative and without overusing the CPU? 的 CSS3 动画

转载 作者:行者123 更新时间:2023-11-28 14:21:53 26 4
gpt4 key购买 nike

我正在尝试制作命运之轮类型的动画。我在整个设计中使用了 4 个 div,一个在另一个之上(带有透明的 PNG)。

现在我正在尝试使用 CSS3 为其制作动画,但我遇到了一个问题:每当 #rotate div 的祖先之一处于相对位置时,CPU 就会跳到 70% 以上(我使用的是 Macbook Pro 2.3Ghz) .

在下面的示例中,如果我将#main 设置为 position:absolute,那么它就可以正常工作,不会比常规页面使用更多的 CPU。但是当更改为 position:relative 时,它​​会跳到超过 70% 的 CPU 使用率。

有人知道如何解决这个问题吗?

这是我的代码示例(为了可读性,我只编写了 -webkit 特定的 CSS,但原始源代码为每个主要的现代浏览器提供了相应的 CSS):

<html>

<body>
<style>

@-webkit-keyframes rotate {
from {
-webkit-transform: rotate(0deg);
}
to {
-webkit-transform: rotate(360deg);
}
}

#background {
position: absolute;
background: url("background.png");
width: 604px;
height: 604px;;
}

#bottom {
position: absolute;
background: url("wheel_bg.png");
width: 604px;
height: 604px;;
}

#top {
position: absolute;
background: url("wheel_top.png");
width: 604px;
height: 604px;;
}

#rotate
{
position: absolute;
-webkit-animation-name: rotate;
-webkit-animation-duration: 15s;
-webkit-animation-iteration-count: infinite;
-webkit-animation-timing-function: linear;
background: url("wheel_rotate.png");
width: 604px;
height: 604px;
left: 0;
}

#main {
position: relative; //here's the problem
left: 50px;
top: 50px;
}

</style>

<div id="main">
<div id="background">
</div>
<div id="rotate">
</div>
<div id="top">
</div>
<div id="bottom">
</div>
</div>


</body>

</html>

最佳答案

您的文档似乎随着轮换而回流,这对 CPU 来说非常费力。我会尝试在 #main 上指定宽度和高度,或者在 main 上放置一个额外的包装器并相对于它定位。

除此之外,您还可以通过使用 3D CSS 转换来利用 GPU,只需更改一下:

 @-webkit-keyframes rotate {
from {
-webkit-transform: rotate3d(0,0,1,0deg);
}
to {
-webkit-transform: rotate3d(0,0,1,360deg);
}
}

但我担心——只要文档在重排——你可能不会从这种技术中看到显着的 CPU 增益,只会看到更平滑的帧速率。

有关回流的更多信息,http://code.google.com/speed/articles/reflow.html

关于css - 如何使用位置为 :relative and without overusing the CPU? 的 CSS3 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8394411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com