添加行时如何为 Angular ui-grid 设置动画
How to animate Angular ui-grid when rows are added
我有一个 Angular UI 网格元素。我定期在数据数组的前面添加新项目。我一次只添加几个(例如 1 到 5 个新项目)
我希望 UI 网格能够为添加的新行设置动画。现在,行是立即添加的,这让人很紧张。我想让新行在其中进行动画处理,这样 UI 网格看起来就可以顺利地添加它们了。
这很容易实现吗?有这个选项吗?
这是一个有点困难的问题,因为 UI-Grid 虚拟化了数据,所以没有实际的 DOM 元素被添加和删除,或者隐藏和显示。这意味着您不能使用常规 Angular 动画指令。
相反,您可以使用 $animate 服务在添加和删除行等用户交互时手动触发动画。这个 "fakes" 过渡,使它看起来像 DOM 已经改变,但实际上没有。
假设您想在新行中淡入淡出。您需要在传入的行数据上有一些标识符,并根据它有选择地应用和删除 class。您会立即设置 opacity: 0
,然后使用 $animate.removeClass()
过渡到 opacity: 1
。 CSS 可能如下所示:
.new-row {
opacity: 0;
}
.new-row-remove {
-webkit-transition: 1s linear all;
-moz-transition: 1s linear all;
-o-transition:1s linear all;
transition: 1s linear all;
opacity: 0;
}
.new-row-remove-active {
opacity: 1;
}
要删除行,您需要反向操作:添加一个 delete-row
class 将从完全不透明度过渡到 0, 然后 使用一个承诺处理程序,一旦 $animate.addClass()
完成就实际删除该行。这是 CSS:
.delete-row-add {
-webkit-transition: 0.5s linear all;
-moz-transition: 0.5s linear all;
-o-transition: 0.5s linear all;
transition: 0.5s linear all;
opacity: 1;
}
.delete-row-add-active {
opacity: 0;
}
这是简短的回答。如需更长的解释和演示,我在此处提供了一篇文章:http://brianhann.com/ui-grid-and-row-animations
我有一个 Angular UI 网格元素。我定期在数据数组的前面添加新项目。我一次只添加几个(例如 1 到 5 个新项目)
我希望 UI 网格能够为添加的新行设置动画。现在,行是立即添加的,这让人很紧张。我想让新行在其中进行动画处理,这样 UI 网格看起来就可以顺利地添加它们了。
这很容易实现吗?有这个选项吗?
这是一个有点困难的问题,因为 UI-Grid 虚拟化了数据,所以没有实际的 DOM 元素被添加和删除,或者隐藏和显示。这意味着您不能使用常规 Angular 动画指令。
相反,您可以使用 $animate 服务在添加和删除行等用户交互时手动触发动画。这个 "fakes" 过渡,使它看起来像 DOM 已经改变,但实际上没有。
假设您想在新行中淡入淡出。您需要在传入的行数据上有一些标识符,并根据它有选择地应用和删除 class。您会立即设置 opacity: 0
,然后使用 $animate.removeClass()
过渡到 opacity: 1
。 CSS 可能如下所示:
.new-row {
opacity: 0;
}
.new-row-remove {
-webkit-transition: 1s linear all;
-moz-transition: 1s linear all;
-o-transition:1s linear all;
transition: 1s linear all;
opacity: 0;
}
.new-row-remove-active {
opacity: 1;
}
要删除行,您需要反向操作:添加一个 delete-row
class 将从完全不透明度过渡到 0, 然后 使用一个承诺处理程序,一旦 $animate.addClass()
完成就实际删除该行。这是 CSS:
.delete-row-add {
-webkit-transition: 0.5s linear all;
-moz-transition: 0.5s linear all;
-o-transition: 0.5s linear all;
transition: 0.5s linear all;
opacity: 1;
}
.delete-row-add-active {
opacity: 0;
}
这是简短的回答。如需更长的解释和演示,我在此处提供了一篇文章:http://brianhann.com/ui-grid-and-row-animations