我有以下angularjs应用程序从Instagram加载内容,但是,在页面加载时,我希望通过平滑过渡淡化加载的内容。
我将{{ loadedClass }}
添加到主HTML标记中,但在加载时似乎没有将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 '';
}
})
我做错了什么?
答案 0 :(得分:0)
在更新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;
}
答案 1 :(得分:0)
您可以添加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>