【问题标题】:Fade content in on load AngularJS在加载AngularJS时淡入内容
【发布时间】:2015-07-09 08:39:36
【问题描述】:

我有以下 angularjs 应用程序,它从 Instagram 加载内容,但是,在页面加载时,我想以平滑过渡淡入加载的内容。

我在主 HTML 标记中添加了{{ loadedClass }},但加载时似乎没有将 ng-enter 放在其中:

HTML

  <script src="bower_components/angular/angular-animate.js"></script>
    <section ng-controller="ShowImages as images" class="page {{ loadedClass }}" ng-view>

CSS

.page.ng-leave {
  -webkit-animation: fadeOut 0.6s both ease-in;
  -moz-animation: fadeOut 0.6s both ease-in;
  animation: fadeOut 0.6s both ease-in;
}

/* line 697, ../sass/app.scss */
.page.ng-enter {
  -webkit-animation: fadeIn 2s both ease-in;
  -moz-animation: fadeIn 2s both ease-in;
  animation: fadeIn 2s both ease-in;
}

**控制器

    $scope.$on('$viewContentLoaded', function(){
                  $scope.loadedClass = 'page-feed';
          });**

 var app = angular.module('instafeed', ['ngAnimate']);
    app.filter('getFirstCommentFrom',function(){
  return function(arr, user){
    for(var i=0;i<arr.length;i++)
    {
      if(arr[i].from.username==user)
        return arr[i].text;
    }
    return '';
  }
})

我做错了什么?

http://machinas.com/wip/machinas/instagramfeed/

【问题讨论】:

  • 你能分享你的完整代码吗?

标签: angularjs


【解决方案1】:

当 DOM 更新时,触发 enter 事件的指令会收到 .ng-enter 类。然后 Angular 添加了 ng-enter-active 类,它会触发动画。 ngAnimate 自动检测 CSS 代码以确定动画何时完成。事件完成后,Angular 会从 DOM 元素中删除这两个类,使我们能够为 DOM 元素定义动画属性。

要实际运行动画,您需要包含 CSS 动画定义。

<script src="js/vendor/angular-animate.js"></script>

最后,在引用 Angular 本身之后,您需要在 HTML 中引用这个库。

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

.fade-in {
  -webkit-transition: 2s linear all;
  transition: 2s linear all;
}
.fade-in.ng-enter {
  opacity: 0;
}
.fade-in.ng-enter.ng-enter-active {
  opacity: 1;
}
.fade-in.ng-leave {
  opacity: 1;
}
.fade-in.ng-leave.ng-leave-active {
  opacity: 0;
}

【讨论】:

  • 嗨,谢谢,但它似乎没有添加 ng-enter 或 ng-leave。用我的代码
  • 您的应用中是否包含ngAnimate
  • 嗨@Simo Endre 当我添加这个 var app = angular.module('instafeed', ['ngAnimate']);它给了我一个错误
  • 我看到 $q 提供程序不包括在内。您可以检查是否包含 $q 作为依赖项吗?
  • 我正在查看网站。现在它没有给我 $q 提供程序的错误,但我看到 fadeIn 样式不包含在 css 中。
【解决方案2】:

你可以添加css动画:

.fade-in {
  -webkit-transition: 2s linear all;
  transition: 2s linear all;
}
.fade-in.ng-enter {
  opacity: 0;
}
.fade-in.ng-enter.ng-enter-active {
  opacity: 1;
}
.fade-in.ng-leave {
  opacity: 1;
}
.fade-in.ng-leave.ng-leave-active {
  opacity: 0;
}

但为了使其正常工作,您还必须将 ngAnimate 模块包含到您的应用中:

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

另外不要忘记包含实际脚本(本示例使用 Bower,但还有其他方式):

<script src="bower_components/angular-animate/angular-animate.js"></script>

【讨论】:

  • 当我添加这个 var app = angular.module('instafeed', ['ngAnimate']);它给了我一个错误。
  • 很可能是因为您没有将它包含在您的页面中。您必须下载它,然后将其包含在您的页面中,或使用 CDN。
  • 在我的页面里,你可以看这里machinas.com/wip/machinas/instagramfeed
  • 现在试试对不起@Chrillewoodz
  • 嗯,奇怪,您可以尝试将 var 应用程序移到自调用函数之外吗?没关系,但你
猜你喜欢
  • 1970-01-01
  • 2011-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-03
  • 2023-04-02
  • 1970-01-01
相关资源
最近更新 更多