canvas可以添加css3特效吗

html-css09

canvas可以添加css3特效吗,第1张

作者:鲁小夫

链接:https://www.zhihu.com/question/26585266/answer/33518900

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

canvas可以添加css3特效:

用css3动画,也就意味着需要依赖dom,动画都是作用在dom上的。而移动浏览器上的dom性能真是低下,因为这里面涉及到排版引擎,你只能通过减少节点和操作去规避问题,却很难解决。

而canvas动画把整个画布的控制权交给你了,动画性能的上限也由程序员来把握。

有人说canvas动画性能不如css3动画,在排版引擎不成为瓶颈的情况下是成立的,毕竟css3动画更方便,更与内容分离。但不要忘了,css3动画虽然不占用js主线程,却受排版引擎的限制,与整个页面的dom结构息息相关。你想想,假如dom真是万能的话,canvas是用来做啥的呢?事实上,像素操作比dom操作性能要高得多,就连2048这样简单的游戏,用dom来写,在手机上都觉得css3动画帧率不行了,我基本上只敢用dom来做找茬这样的无动画游戏。

总结,dom和css3动画是用来给内容布局加上特效的通用解决方案,在性能堪忧的移动浏览器上很可能会受排版性能所限,达不到理想的效果。而对性能有要求的特定场景,比如游戏,用canvas会有很大的提高,如果觉得事件和坐标管理麻烦的话,可以用一个好一些的游戏引擎。对于大量创建销毁对象的情况,例如打飞机游戏,你可能还需要用到对象池,毕竟js gc的开销也是够呛。

简单解释一下:

CSS更像是把多个“矩形”(div)裁剪后,然后拼接成一个图案,然后给图案上色。

Canvas由点开始,延长无数个点,得到线,延长线之后得到一个面(三角形,圆形,矩形等等的图案面),然后给线或者面描边,上色。

CSS目前更像是小朋友的手工课,Canvas更像是用一支笔画图,不过画出来的图更加像能够控制大小的矢量图片。

下图简单说明

在面对曲线和更复杂图形的时候,Canvas比CSS更有办法。另外Canvas确定坐标位置的时候更加贴近我们常用到的数学思维方法。

只能显浅说说。