在angular的ui-router中,是否可以对特定的视图进行动画化?
In angular ui-router is it possible to animate specific view?
要在angular.js ui-router中显示状态变化的动画,有enter
和leave
的类。这意味着当我制作动画时,它对于每个视图都是相同的。
这个例子不是我的,但请注意,当我回到上一个状态时,动画是相同的,它向左。http://embed.plnkr.co/M03tYgtfqNH09U4x5pHC/preview
是否有办法在每个状态或其他事件上添加动画?
由于动画是通过CSS应用的,因此似乎您唯一的选择是根据新状态和以前的状态确定应该应用哪种CSS。在视图更改事件上将类应用于传出视图很容易,但对于传入视图则要困难得多。
这应该可以工作,但需要破解angular-ui-router.js。我认为将此功能写入某种扩展脚本应该是相对直接的。
-
为将要执行的不同动画创建不同的CSS类。如下图所示:
-
在窗体控制器中添加一个作用域变量,指示应该发生哪个动画,例如
$scope.animationType
。 -
在窗体控制器中为视图更改事件添加侦听器,该事件将根据当前和未来的状态更改
$scope.animationType
的值。该值应该与你想要执行的动画的CSS类相匹配。 -
在angular-ui-router.js中找到
cleanupLastView
函数并添加参数和前两行:
.
function cleanupLastView(clonedElement) {
if(clonedElement) clonedElement.attr("class", scope.animationType);
if(currentEl) currentEl.attr("class", scope.animationType);
...
然后您必须更改对cleanupLastView
的调用,以便包含克隆元素:cleanupLastView(clone)
不包含@keyframes
的缩略CSS
.form-view-slide-left.ng-enter {
animation:slideInRight 0.5s both ease;
}
.form-view-slide-left.ng-leave {
animation:slideOutLeft 0.5s both ease;
}
.form-view-slide-right.ng-enter {
animation:slideInLeft 0.5s both ease;
}
.form-view-slide-right.ng-leave {
animation:slideOutRight 0.5s both ease;
}
相关文章:
- ng使用ui视图制作动画
- Famo.us跨多个视图的动画
- 余烬对视图更改进行动画处理
- 在视图中使用 JS 对圆形描边进行动画处理
- 键盘关闭模式为交互式时的动画视图高度 [反应本机]
- 当地图滚动到视图中时,为谷歌地图标记添加动画效果
- Famo.us:如何以编程方式对滚动视图的位置进行动画处理
- 在视图中激活javascript动画
- 延迟删除视图,以便为其设置动画
- AngularJS:如何有条件地应用视图动画
- 如何设置我的标题的动画,以便在加载时从左水平滑动到页面视图
- 为什么我的ng视图动画不起作用
- 根据原点和目标设置角度动画视图过渡
- 动画SVG视图框更改
- 打开键盘上的动画视图(Titanium Mobile)
- 使用Ionic Framework,我如何向过渡动画提供我希望视图以何种方式滑入或滑出的提示
- Ionic Tinder卡添加了新的卡功能,当卡视图不是活动视图时添加卡时打破滑动动画
- 在视图中检测动画元素
- 动画化knockout模板视图
- Angularjs中视图间的跨视图动画