【问题标题】:Angular 1.2: Animating list items in parallel using ngAnimate and CSSAngular 1.2:使用 ngAnimate 和 CSS 并行动画列表项
【发布时间】:2013-11-28 06:05:06
【问题描述】:

我有一个列表,当我将一个项目添加到此列表时,我希望将其动画化,并且当前可见的任何现有项目也应该并行动画化 - 想想从上到下的垂直传送带。

除了添加新项目时可见项目卡入到位之外,我几乎可以正常工作。这是一个 sn-p if 代码:

<div class="outerContainer">
   <div class="container" ng-repeat="item in items">
    .....
   </div>
</div>

.outerContainer {
  height: 200px;
  overflow: hidden;
}

.container {
    position: relative;
    background-color: lightgray;
    margin: 1px;
    width: 200px;
    height: 50px;
}

.container.ng-enter {
    -webkit-transition: 0.5s linear all;
    transition: 0.5s linear all;
}
.container.ng-enter {
    top:-50px;
}
.container.ng-enter.ng-enter-active {
    top:0;
}

任何有用的指针将不胜感激。

【问题讨论】:

  • 您使用的是哪个版本的 Angular 以及您在哪个浏览器中查看它?
  • Angular 1.2.1 和 Chrome 31.0.1650.57
  • 你是否包含了 angular-animate.js 并加载了 ngAnimate 模块?
  • 当然,我要添加的项目按预期动画下来,但是,视图中的现有项目如前所述会卡入到位。
  • 您能否在 plunker 上复制您的问题:plnkr.co/edit/vRGjRzZVazGBAuYxYtM3?p=preview?使用您的标记和 CSS,动画对我来说似乎很流畅。

标签: css angularjs ng-repeat


【解决方案1】:

我相信你的转换在错误的位置有转换属性,它应该是这样的

.container.ng-enter {
    -webkit-transition: all 0.5s linear;
    transition: all 0.5s linear;
}

【讨论】:

  • 感谢您的帮助,但没有任何区别。
  • 我怀疑它适用于第一项,因为它从顶部开始:-50px,然后动画到顶部:0px 的位置。但是,再次为同一个项目设置动画需要一个新的起始位置 top:0px 动画到 top:50px 再次为同一个项目设置动画将需要一个 50 的起始位置,以 100 结束,依此类推——这可能就是它们捕捉的原因。我不可能是第一个遇到这种情况的人。
  • 我已经构建了一个 codepen 来反映我认为您的问题 - codepen.io/ed_conolly/pen/ufmIL。那正确吗?其他元素跳下来,因为上面创建了一个新元素。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-07
  • 1970-01-01
  • 1970-01-01
  • 2017-08-01
  • 2014-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多