在大画布上制作HTML5流体粒子

在大画布上制作HTML5流体粒子,html,canvas,particles,Html,Canvas,Particles,我是html5/CSS3/jquery的新手,我正在做这个(尚未完成): 问题是,由于带有粒子的大画布,动画并不像它可能的那样流畅。 因此,如果您感到无聊,请毫不犹豫地查看我的代码,并给我一些建议,以提高流动性^^ 非常感谢 对于使用RequestAnimationFrame()而不是setTimeout()的人来说,可能会使事情更顺利。请参阅Paul Irish的博文。了解使用RequestAnimationFrame()而不是setTimeout()可能会使事情更顺利。请参阅Paul Iri

我是html5/CSS3/jquery的新手,我正在做这个(尚未完成): 问题是,由于带有粒子的大画布,动画并不像它可能的那样流畅。 因此,如果您感到无聊,请毫不犹豫地查看我的代码,并给我一些建议,以提高流动性^^


非常感谢

对于使用RequestAnimationFrame()而不是setTimeout()的人来说,可能会使事情更顺利。请参阅Paul Irish的博文。

了解使用RequestAnimationFrame()而不是setTimeout()可能会使事情更顺利。请参阅Paul Irish的博客。

巨大的性能影响很可能是由实时计算/渲染的CSS属性(如透明度、阴影和圆角)造成的

还要注意,对DOM元素的更改(如动画)会导致回流,代价高昂,请参阅

运行此功能后,我看到了一个很大的不同:

$('*').css({backgroundColor:'transparent', opacity:1, boxShadow:'none'});

如果可以,请将所有(半透明)和圆角图形替换为等效的png图像。

巨大的性能影响很可能是由实时计算/渲染的CSS属性(如透明度、阴影和圆角)造成的

还要注意,对DOM元素的更改(如动画)会导致回流,代价高昂,请参阅

运行此功能后,我看到了一个很大的不同:

$('*').css({backgroundColor:'transparent', opacity:1, boxShadow:'none'});

如果可以,请将所有(半透明)和圆形图形替换为等效的png图像。

您还可以考虑对一些动画使用css3转换,删除并向元素添加新类以更改其样式,而不是使用javascript(jQuery)。使用jQuery作为旧浏览器和IE的后备方案

这使浏览器能够进行渲染,在某些情况下,如在iOS中,可以通过硬件加速渲染


对于canvas元素,我没有多少经验,但我对您正在创建的效果感兴趣。但我认为开始时的大规模画布动画有点多,已经有这么多的事情在进行,也许不需要那种效果?作为一个用户,我只是这么认为。

你也可以考虑在一些动画中使用css3转换,删除并向元素添加新类来更改它们的样式,而不是使用javascript(jQuery)。使用jQuery作为旧浏览器和IE的后备方案

这使浏览器能够进行渲染,在某些情况下,如在iOS中,可以通过硬件加速渲染


对于canvas元素,我没有多少经验,但我对您正在创建的效果感兴趣。但我认为开始时的大规模画布动画有点多,已经有这么多的事情在进行,也许不需要那种效果?这只是我作为用户的意见。

很好,做得很好,但只是稍微好一点。我想这是因为背景图片。。。另一个问题是cancelAnimationFrame只与Chrome一起工作:/tim eyou的大多数不需要cancelAnimationFrame。只是不要再调用requestAnimationFrame()。好的,做得很好,只是稍微好一点。我想这是因为背景图片。。。另一个问题是cancelAnimationFrame只与Chrome一起工作:/tim eyou的大多数不需要cancelAnimationFrame。不要再调用requestAnimationFrame(),事实上你是对的,我想我必须使用CSS3而不是js作为背景。(当我关闭js背景时,patricles运行得很好)我将为IE制作另一个脚本(该死,我教过问题会解决的)好的,我尝试了CSS3背景,但在图像背景上无法进行转换,“因为它是一个字符串”(如我所读)。所以,现在我改变了动画的顺序,它看起来对我来说相当不错^^嗯,实际上你是对的,我想我必须使用CSS3而不是js作为背景。(当我关闭js背景时,patricles运行得很好)我将为IE制作另一个脚本(该死,我教过问题会解决的)好的,我尝试了CSS3背景,但在图像背景上无法进行转换,“因为它是一个字符串”(如我所读)。所以,现在我改变了动画的顺序,这对我来说很好^^好的,我改变了半透明的,动画的顺序,现在对我来说很好。谢谢好吧,我换了半透明的,还有动画的顺序,现在我觉得很不错。谢谢