【问题标题】:Angular.js move animationAngular.js 移动动画
【发布时间】:2014-07-18 19:43:45
【问题描述】:

我很难创建一个相当简单的移动动画。

我想要达到的效果类似于这个http://jsbin.com/vorub/1/edit?output(我从其他一些SO问题中得到的)。

现在我设法使用.animation() 做到了

基本上是这样做的

.animation('.move-to-top', [function() {
    return {
        addClass: function(element, className, done) {

            var el = $(element);
            var top = el.position().top;

            el
                .addClass('move-to-top')
                .one('transitionend', function() {

                    setTimeout(function() {
                        el.css({
                            transform: 'scale(1.03) translateY(-' + (top+10) + 'px)'
                        })
                        .one('transitionend', function() {
                            setTimeout(function() {
                                el
                                    .removeClass('move-to-top')
                                    .css({
                                        transform: 'scale(1) translateY(-' + (top) + 'px)'
                                    })
                            }, 50);


                            el.prevAll('.timetracking-item')
                                .css({
                                    transform: 'translateY(' + el.height() + 'px)'
                                });

                        });

                    }, 100);

                });

        }
}
}]);

move-to-top 类在哪里这样做

.move-to-top {
    @include vendor(transition, all 400ms ease-in-out);
    @include vendor(transform, scale(1.03) translateY(-10px));

    position: relative;
    z-index: 999;
}

它的作用是

  1. 添加可缩放和向上移动项目的类
  2. 使用js将item移到顶部
  3. 使用 js 将之前的所有元素向下移动以腾出空间
  4. 删除添加缩放的类

但这只是为了效果,它是使用转换完成的,这当然是不可取的,所以我需要在转换完成后“清理”并删除转换并实际移动 DOM 中的元素。或者完全不同。

理想的情况是orderByng-move 组合,但这需要ng-move 有一些ng-pre-moveng-after-move 事件,据我所知,没有。

或者至少如果你可以同时使用addClass: fn()move: fn(),其中addClass 将首先触发(当元素位于旧位置时),但你也不能这样做(addClass 不会'应用orderBy 时触发)。

我能想到的最后一个选项,也是最起码的,是在所有转换完成后从我的.animation() 广播一些事件并在控制器中捕获它,然后对数组进行排序,但我需要删除所有项目的样式属性(删除项目),可能会而且可能会cause flickers

还有其他想法吗?

【问题讨论】:

    标签: javascript angularjs css animation ng-animate


    【解决方案1】:

    预迁移显然是在 1.3 https://github.com/angular/angular.js/issues/7609#issuecomment-44615566

    目前,我所做的是应用 ng-if,它强制 angular 重新渲染整个列表。工作正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-05
      相关资源
      最近更新 更多