css3动画性能差(仅限Chrome)

fcy6dtqo  于 2023-06-19  发布在  Go
关注(0)|答案(2)|浏览(85)

我正在使用css3动画的网站上工作,它在Safari和Firefox中工作得很好,但由于某种原因,在Chrome中的性能很糟糕。(约15 fps)
http://triple-tested.com/animations/
动画很简单,基本上是几个大圆圈分层。我还用javascript添加了一些png精灵动画。
我知道硬件加速,但我不认为这是问题所在,这似乎是Chrome独有的一些怪癖。css动画可以单独执行“OK”,但是一旦我添加了sprites,性能就会大大下降。

$.fn.spriteme = function(options) {
        var settings = $.extend({ framerate: 30 }, options);        

        return this.each(function(){
            var $el =  $(this),
                    curframe = 0,
                    width = settings.width,
                    fr = 1000/settings.framerate;

            (function animloop(){
                if(curframe == settings.frames) { curframe = 0; }   
                $el.css('background-position', (curframe*width)*-1  + 'px center');
                curframe++;
                setTimeout( animloop, fr );
            })();       
        });     
    };

这是我写的动画精灵的代码,但正如我所说,它在Safari和Firefox中表现完美,所以我不认为这是问题。Chrome似乎在使用css和sprites进行动画方面有问题。
我已经尝试了我能在网上找到的一切,但如果有人有任何建议,请让我知道。
我在Mac上使用最新的稳定Chrome(17.0.963.93)
你可以在这里看到css(使用较少)btw http://triple-tested.com/animations/css/style.less

r55awzrz

r55awzrz1#

感谢回复的家伙,我认为这是一个问题,某些版本的 chrome ,因为它的工作完美的最新金丝雀建设。
我最终剥离了一些chrome的动画,优雅福尔斯静态图像。

zi8p0yeb

zi8p0yeb2#

Chrome以同时转换问题而闻名。可能有帮助的一件事是启用硬件加速,例如:will-change: transform;使chrome使用GPU进行渲染过渡。

.smooth-transition {
    transition: all 0.3s ease-out;
    will-change: transform;
}

相关问题