ngAnimate — во время анимации видны как исходный, так и целевой шаблон.

Я пытаюсь создать простую анимацию постепенного появления и исчезновения, используя ngAnimate. Анимация выглядит хорошо, за исключением того, что контейнер представления содержит как исходный, так и целевой шаблон во время анимации.

Как я могу показать только активный шаблон?

<html ng-app="testApp" lang="en">
    <head>
        <script src="https://code.angularjs.org/1.3.15/angular.min.js"></script>
        <script src="https://code.angularjs.org/1.3.15/angular-route.js"></script>
        <script src="https://code.angularjs.org/1.3.15/angular-animate.min.js"></script>

        <script type="text/ng-template" id="/page1.html">page1 content</script>
        <script type="text/ng-template" id="/page2.html">page2 content</script>
        <script>
            var app = angular.module('testApp', ['ngRoute','ngAnimate']);
            app.config(function($routeProvider) {
                $routeProvider.when('/page1', {templateUrl: '/page1.html'});
                $routeProvider.when('/page2', {templateUrl: '/page2.html'});
            });
        </script>

        <style>
            #container {border: 1px solid black;}   /**the container has double height while animation*/

            #content {-webkit-transition: opacity .2s linear;}  
            #content.ng-enter {opacity:0;}
            #content.ng-enter.ng-enter-active {opacity:0;}
            #content.ng-leave {opacity:1;}
            #content.ng-leave.ng-leave-active {opacity:0;}
        </style>
    </head>
    <body>
        <div id="container">
            <div id="content" ng-view></div>
        </div>
    </body>
</html>

person nagy.zsolt.hun    schedule 24.05.2015    source источник
comment
Вы когда-нибудь находили решение для этого?   -  person ecc    schedule 09.10.2015
comment
Я выбираю третье решение Блеза   -  person nagy.zsolt.hun    schedule 14.10.2015


Ответы (1)


Есть несколько решений:

  1. Задержка анимации входа (transition-delay) на длительность анимации выхода
  2. Удалите анимацию входа или выхода
  3. Используйте #content{position: absolute} или #content + #content {margin-top: -$height px}, чтобы высота родителя не менялась.
person Blaise    schedule 24.05.2015
comment
1. есть задержка после исчезновения исходного шаблона + не решает проблему 2. не работает 3. Я бы не использовал абсолютную позицию из-за макета моей страницы - person nagy.zsolt.hun; 24.05.2015
comment
Тогда используйте вариант margin-top. У вас не может быть двух элементов в вашем DOM в одном и том же месте без отрицательного смещения или абсолютного позиционирования. - person Blaise; 26.05.2015
comment
Возможно ли иметь только 1 элемент в DOM? - person nagy.zsolt.hun; 27.05.2015