【发布时间】:2017-04-01 00:25:12
【问题描述】:
我的组件上附加了以下动画代码
animations:[
trigger('slide', [
state('show', style({
height: '*'
})),
state('hide', style({
position: 'relative',
height: 0,
overflow: 'hidden'
})),
transition('show <=> hide',animate('130ms ease-out'))
])
]
这很难解释,(而且我似乎无法让动画在 plunker 上运行),但就是这样。
目前的功能如下:
- 用户单击按钮以显示表格。
- 表格从 div 下方顺利滑入视图。
- 用户再次点击按钮。
- 表格顺利滑出视图,滑入 div。
所需的功能如下:
- 用户单击按钮以显示表格。
- 表格从 div 下方顺利滑入视图。
- 向表中添加了更多行(可能是大量行)
- 动画处理新的表格高度,而不是立即显示,而是通过平滑动画逐渐移动到新高度。
- 用户点击按钮。
-
表格再次滑回 div 下。
编辑:这是一个plunker 演示。您可以看到,当您在表格中添加/删除行时,动画不会顺利移动到新高度。
问题是因为如果你处于true状态并且添加了行。
动画不会再次转换为true,因为它已经处于true状态。
那么当添加项目时,我将如何触发到“newHeight”状态的转换?
【问题讨论】:
-
该问题与仅在创建元素时计算高度有关。我认为不可能强制动画 API 重新计算它。
-
也许这个解决方案对你有帮助:stackoverflow.com/a/47492134/5155810
-
@MartinCremer 您的解决方案建议不相关
-
@canerandagio 我认为它非常适合。你可以用它包裹任何高度变化的东西。