AngularJS - Animate ng-view过渡

Gre*_*reg 52 javascript animation url-routing angularjs

我有2个html页面,welcome.html以及login.html这两者都是"插入"到index.html通过在URL dependending ngview属性和路由器供应商,作为我的AngularJS应用程序的一部分.

可以在AngularJS主页的Wire up a Backend下找到此示例.

我的问题:有没有办法动画之间的过渡welcome.htmllogin.html

Mor*_*mer 69

Angularjs 1.1.4现在引入了ng-animate指令来帮助动画化不同的元素,特别是ng-view.

您还可以观看有关此新功能的视频

从angularjs 1.2 更新,动画的工作方式发生了巨大的变化,现在大部分都是用CSS控制的,无需设置javascript回调等.你可以查看Moo年份更新教程.@dfsq在评论中指出了一组很好的例子.

  • 我还创建了一个`ngView`动画的演示,可能对[check](http://dfsq.github.io/ngView-animation-effects/app/)感兴趣. (4认同)
  • 这里有一个很好的教程:http://www.yearofmoo.com/2013/04/animation-in-angularjs.html (3认同)
  • 1.2更改使这方面变得更容易有更新的帖子由yearofmoo你需要查看http://www.yearofmoo.com/2013/08/remastered-animation-in-angularjs-1-2.html (3认同)

mad*_*ead 16

检查此代码:

Javascript:

app.config( ["$routeProvider"], function($routeProvider){
    $routeProvider.when("/part1", {"templateUrl" : "part1"});
    $routeProvider.when("/part2", {"templateUrl" : "part2"});
    $routeProvider.otherwise({"redirectTo":"/part1"});
  }]
);

function HomeFragmentController($scope) {
    $scope.$on("$routeChangeSuccess", function (scope, next, current) {
        $scope.transitionState = "active"
    });
}
Run Code Online (Sandbox Code Playgroud)

CSS:

.fragmentWrapper {
    overflow: hidden;
}

.fragment {
    position: relative;
    -moz-transition-property: left;
    -o-transition-property: left;
    -webkit-transition-property: left;
    transition-property: left;
    -moz-transition-duration: 0.1s;
    -o-transition-duration: 0.1s;
    -webkit-transition-duration: 0.1s;
    transition-duration: 0.1s
}

.fragment:not(.active) {
    left: 540px;
}

.fragment.active {
    left: 0px;
}
Run Code Online (Sandbox Code Playgroud)

主页HTML:

<div class="fragmentWrapper" data-ng-view data-ng-controller="HomeFragmentController">
</div>
Run Code Online (Sandbox Code Playgroud)

部分HTML示例:

<div id="part1" class="fragment {{transitionState}}">
</div>
Run Code Online (Sandbox Code Playgroud)


F L*_*has 5

我不确定是否可以直接使用AngularJS进行操作,但是您可以将欢迎和登录的显示设置为无,并在加载后使用指令为不透明度设置动画.

我会这样做的.2点击内容时淡入内容并淡出内容的指令.fadeouts指令可以简单地为具有唯一ID的元素设置动画,或者调用广播淡出的服务

模板:

<div class="tmplWrapper" onLoadFadeIn>
    <a href="somewhere/else" fadeOut>
</div>
Run Code Online (Sandbox Code Playgroud)

指令:

angular
  .directive('onLoadFadeIn', ['Fading', function('Fading') {
    return function(scope, element, attrs) {
      $(element).animate(...);
      scope.$on('fading', function() {
    $(element).animate(...);
      });
    }
  }])
  .directive('fadeOut', function() {
    return function(scope, element, attrs) {
      element.bind('fadeOut', function(e) {
    Fading.fadeOut(e.target);
  });
    }
  });
Run Code Online (Sandbox Code Playgroud)

服务:

angular.factory('Fading', function() {
  var news;
  news.setActiveUnit = function() {
    $rootScope.$broadcast('fadeOut');
  };
  return news;
})
Run Code Online (Sandbox Code Playgroud)

我刚刚快速汇总了这段代码,所以可能会有一些错误:)