【发布时间】:2019-07-05 02:54:59
【问题描述】:
我目前正在使用角度动画。因此,我想出了两种可能的方法来将动画附加到组件上。在下文中,我将它们描述为状态/过渡动画和查询动画。
在这个问题中,我主要想知道选择一种或另一种方式是否存在性能差异!?
1.状态/过渡动画
.html
<div [@animation_foo]/>
.ts
trigger('animation_foo', [
state('true', style({...}),
state('false', style({...})
transition('true => false', animate(...)
]
2。查询动画
.html
<div [@animation_foo]>
<div class="bar"/>
</div>
.ts
trigger('animation_foo', [
query('.bar', style({...}), animate('10ms', style({...}))
]
进一步的想法:
- 我的主要担心与第 2 点有关。查询是:
- 如果您没有一个查询而是多个查询,它们通过 group(...) 组合,并且 css 选择器将查找更深层次的元素 ('.foo > :nth-child(n +3) .bar') 你必须遍历 DOM 树的很大一部分。
- 应用到元素的样式和动画发生在找到元素之后和动画之前 - 每次 - 因为我认为编译器无法预编译它?
-
环境/目标平台:我知道它可能与普通的 Web 应用程序无关,但我尝试在具有多个路由器、嵌套组件和大量 ngIf 的 ngFors 的大型企业应用程序中思考,所以我个人可以想象,查询所有这些可能是一些努力。
-
浏览器:我知道浏览器的行为不同。就我个人而言,我目前只对 Chrome 感兴趣 - 但为了社区,一般的答案会很棒。
如果您有任何需要注意的更多信息,很高兴分享(错误,...)
【问题讨论】:
-
您是否尝试过在开发工具中记录这两个选项的性能?
-
我试图提供一个包含大量 div 的新原型应用程序,但这并没有产生任何可数的结果。所以一般的问题是查询/状态动画到底发生了什么,然后我们可以进一步考虑是否有任何性能影响。
标签: css angular performance animation browser