当前位置: 首页 > 面试题库 >

移除一个剩余的ng-repeat物品时,我该如何为其动画设置动画?

狄心水
2023-03-14
问题内容

我有一个使用ng-repeat的动态项目列表。发生某些事情时,某项可能会消失。我已经使用ng-
animate平滑地处理了这些项目的移除动画,但是当它们消失后,其余的项目就简单地捕捉到了它们的新位置。我如何才能使该运动顺利进行动画处理?

我尝试对重复的类应用“全部”过渡,并使用ng-move却没有成功。


问题答案:

您可以通过设置max-height属性动画来实现。查看此示例:

http://jsfiddle.net/k4sR3/8/

您需要为选择一个足够高的值max- height(在我的示例中,我使用90px)。最初添加项目时,您希望它以0高度开始(我也left希望将项目从左侧滑入opacity,但如果它们不符合以下条件,则可以将其删除:你在做):

.repeated-item.ng-enter {
    -webkit-transition:0.5s linear all;
    -moz-transition:0.5s linear all;
    -o-transition:0.5s linear all;
    transition:0.5s linear all;
    max-height: 0;
    opacity: 0;
    left: -50px;
}

然后,在ng-enter-active规则中为这些属性设置最终值:

.repeated-item.ng-enter.ng-enter-active {
    max-height: 90px;
    opacity: 1;
    left: 0;
}

删除项目有些棘手,因为您将需要使用基于关键帧的动画。再次,您希望设置动画max- height,但是这次您要从90px开始并将其减小到0。随着动画的运行,该项目将缩小,而以下所有项目将平滑向上滑动。

首先,定义将要使用的动画:

@keyframes my_animation {
  from {
    max-height: 90px;
    opacity: 1;
    left: 0;
  }
  to {
    max-height: 0;
    opacity: 0;
    left: -50px;
  }
}

(为简便起见,我在这里省略了供应商特定的定义,@-webkit-keyframes@-moz- keyframes等-看看上面的全样本的jsfiddle。)

然后,声明您将使用此动画,ng-leave如下所示:

.repeated-item.ng-leave {
  -webkit-animation:0.5s my_animation;
  -moz-animation:0.5s my_animation;
  -o-animation:0.5s my_animation;
  animation:0.5s my_animation;
}

基本

如果任何人都在努力弄清楚如何使AngularJS动画完全正常工作,这是一个简短的指南。

首先,使动画支持,你将需要包括一个附加文件angular-animate.js之后 您加载angular.js。例如:

<script type="text/javascript" src="angular-1.2/angular.js"></script>
<script type="text/javascript" src="angular-1.2/angular-animate.js"></script>

接下来,您需要ngAnimate通过将其添加到模块的依赖项列表中进行加载(在第二个参数中):

var myApp = angular.module('myApp', ['ngAnimate']);

然后,为您的ng-repeat项目分配一个类。您将使用此类的名称来分配动画。在我的示例中,我用作repeated-item名称:

<li ng-repeat="item in items" class="repeated-item">

然后,使用repeated-item类以及特殊类ng-enter,在CSS中定义动画ng-leave,并ng- move在添加,删除或移动项目时将Angular添加到项目中。

AngularJS动画的官方文档在这里:

http://docs.angularjs.org/guide/animations



 类似资料:
  • 问题内容: 我有一个列表,可以使用ng- repeat进行迭代:用户可以使用上箭头和下箭头图标与列表项进行交互,单击它们后,我只需更改“列表”中元素的顺序”,这就是角度建议更改模型并自动将更改反映在视图中的原因。 moveUp中的逻辑:- 上面的代码完全可以正常工作,向下移动项目的逻辑与此类似。但是我要解决的问题是如何放置动画?我知道angular会自行处理绑定视图和模型的问题,但是当按下向下箭头

  • 应用于Box2D实体后: 我在尝试像许多游戏一样(比如涂鸦跳跃),一旦英雄身体从屏幕顶部到达一定距离,就停止移动,开始滚动舞台,这样我们就感觉英雄还在爬得更高。为此,我需要首先移动英雄,然后移动舞台。 如何才能正确实现这一点?知道吗?

  • 我对SpriteKit非常陌生。我有一组节点,需要一起移动到每个节点的不同点,在所有节点的动画完成后,我想做一些其他的事情。 我以前是用组件制作的。一个块提供了我需要的东西。但在SpriteKit中,每个节点都有自己的动作,并自行设置动画。我找不到任何精灵节点的块动画。所以我无法控制动画的完成。 希望,我很清楚。提前谢谢。

  • 本文向大家介绍iOS 如何为自动版面设置动画,包括了iOS 如何为自动版面设置动画的使用技巧和注意事项,需要的朋友参考一下 示例 如果没有“自动布局”,动画将随着时间的推移更改视图的帧而完成。使用“自动布局”时,约束决定了视图框架,因此您必须为约束设置动画。这种间接方式使动画更难以可视化。 以下是使用“自动版式”制作动画的方法: 改变约束的不断使用周期调用创建后(CADisplayLink,dis

  • 我有一个简单的动画文件: 基本上,这会将一个组件沿X轴向左滑动50 dp。我已经成功地将它附加到一个组件上,它工作得非常完美,但是当我尝试同时将它附加到多个组件上时,动画只适用于最后一个组件。 例如:我有5张牌。AI敌人从手中随机选择一张牌。但是我想动画敌人“捡”卡。这就是动画发挥作用的地方。 比如说: 这里的目标是循环阵列中的每张卡,并将其滑出X轴。但动画只出现在最后一张牌上(阵列中的第五张牌)

  • 嗨,我有一个问题,我的网站上的动画。我有两个div,一个有100%的高度,如果我悬停在它上面,它会下降2个rems,而这个元素下的所有其他内容也会下降。我该怎么修好它?下面是指向简单示例的链接:jsfiddle null null