动画化多个图像的角度应用程序时提高性能

时间:2019-02-27 14:56:03

标签: css angular image performance angular6

柱塞

https://next.plnkr.co/edit/GDHFwA4osgrGaq9y?open=lib%2Fapp.ts&deferRun=1

注释:这是一个非常基本的插件,只是为了模拟Boombox,请记住最终应用程序具有更多元素,例如按钮和区域

上下文

嗨,

我正在制作一个带有角度的音乐应用程序,该应用程序将模拟Boombox,其中的多个图像会根据音乐的节奏更改其不透明度。图片是通过ngFor加载的,大约为35-40,它们的大小和动画是通过角度定义的。

我所面临的问题与我拥有的图像数量有关(或者就是我所想的那样)。

案例1

构建应用程序时,我的第一种方法是使用单个SVG,其结果是SVG在某些位置被随机切割(例如:圆环10的一半,圆环15和圆环25的一半消失了),动画太懒了,页面的按钮动画真的很慢,最后,图像顶部的文本随机“闪烁”。

案例2

其次,我制作并使用了35张不同大小的PNG图片,结果是页面的第一次加载确实很慢,网站的动画和交互效果更好,但是网站消耗的资源确实很丰富。高,并且在Chrome中更改标签页时,图像已从浏览器缓存中“删除”,因此当您返回网站时,图像看上去空白了几秒钟

案例3

第三次也是我最后的尝试,是使用单个PNG图像,结果与案例1相同,只是在更改标签页时页面看上去空白。

侧面解决方案

我对代码性能进行了一些改进,例如:

  • changeDetection:组件上的ChangeDetectionStrategy.OnPush

  • trackBy:ngFor上的circleTrack

  • 将更改:不透明;在CSS上

尽管如此,所有方法均未对性能产生重大影响。

最终提示

  • 我必须使用图像,我团队的设计师正在制作不同的样式,这些样式稍后会进入应用程序
  • 我正在使用路由角度动画,当我在组件之间进行切换时,动画总是很迟钝,有时甚至不做动画

我将非常感谢您在改善性能或采用哪种方法方面的帮助。

0 个答案:

没有答案