码迷,mamicode.com
首页 > Web开发 > 详细

angular.js双向数据绑定实现动画特效

时间:2015-08-27 08:23:15      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:

一、HTML

1、引入必要的js文件,这个不多说了(注意由于之后要使用angular提供的动画效果和路由效果,所以要引入angular-animate.js和angular-route.js两个文件)

2、body内加入以下代码:

 <div class="page {{pageClass}}" ng-view></div>

ng-view不多说,class通过双向绑定的方式,通过controller动态控制class中的{{pageclass}}

另外不要忘了使用模块

<html ng-app="bookStoreApp">

二、Javascript

1、app.js文件

这个是入口文件,代码如下:

var bookStoreApp = angular.module(‘bookStoreApp‘, [
    ‘ngRoute‘, ‘ngAnimate‘, ‘bookStoreCtrls‘, ‘bookStoreFilters‘,
    ‘bookStoreServices‘, ‘bookStoreDirectives‘
]);

bookStoreApp.config(function($routeProvider) {
    $routeProvider.when(‘/hello‘, {
        templateUrl: ‘tpls/hello.html‘,
        controller: ‘HelloCtrl‘
    }).when(‘/list‘, {
        templateUrl: ‘tpls/bookList.html‘,
        controller: ‘BookListCtrl‘
    }).otherwise({
        redirectTo: ‘/hello‘
    })
});

首先定义了bookStoreApp模型模型,并添加依赖。之后通过config设定路由,并设定每个路由对应的控制器。

2、controller.js

用来设定控制器,代码如下:

var bookStoreCtrls = angular.module(‘bookStoreCtrls‘, []);
bookStoreCtrls.controller(‘HelloCtrl‘, [‘$scope‘,
    function($scope) {
        $scope.greeting = {
            text: ‘Hello‘
        };
        $scope.pageClass="hello";
    }
]);
bookStoreCtrls.controller(‘BookListCtrl‘, [‘$scope‘,
    function($scope) {
        $scope.pageClass="list";
    }
]);

这里就通过不同控制器下对pageClass变量的设定,实现了样式的切换。

三、CSS

.page {
    bottom:0;
    padding-top:200px;
    position:absolute;
    text-align:center;
    top:0;
    width:100%;
}
.page h1 {
    font-size:60px;
}
.page a {
    margin-top:50px;
}
.hello {
    background:#00D0BC;
    color:#FFFFFF;
}
.list{
    background:#E59400;
    color:#FFFFFF;
}
@-webkit-keyframes rotateFall {
    0% {
        -webkit-transform: rotateZ(0deg);
    }
    20% {
        -webkit-transform: rotateZ(10deg);
        animation-timing-function: ease-out;
    }
    40% {
        -webkit-transform: rotateZ(17deg);
    }
    60% {
        -webkit-transform: rotateZ(16deg);
    }
    100% {
        -webkit-transform: translateY(100%) rotateZ(17deg);
    }
}
@-webkit-keyframes slideOutLeft {
    to {
        -webkit-transform: translateX(-100%);
    }
}
@-webkit-keyframes rotateOutNewspaper {
    to {
        -webkit-transform: translateZ(-3000px) rotateZ(360deg);
        opacity: 0;
    }
}
@-webkit-keyframes scaleUp {
    from {
        opacity: 0.3;
        -webkit-transform: scale(0.8);
    }
}
@-webkit-keyframes slideInRight {
    from {
        -webkit-transform:translateX(100%);
    }
    to {
        -webkit-transform: translateX(0);
    }
}
@-webkit-keyframes slideInUp {
    from {
        -webkit-transform:translateY(100%);
    }
    to {
        -webkit-transform: translateY(0);
    }
}
.ng-enter {
    z-index: 8888;
}
.ng-leave {
    z-index: 9999;
}
.hello.ng-enter {
    -webkit-animation: scaleUp 0.5s both ease-in;
}
.hello.ng-leave {
    -webkit-transform-origin: 0% 0%;
    -webkit-animation: rotateFall 1s both ease-in;
}
.list.ng-enter {
    -webkit-animation:slideInRight 0.5s both ease-in;
}
.list.ng-leave {
    -webkit-animation:slideOutLeft 0.5s both ease-in;
}

这里就是基本的CSS3动画定义,没有写其他兼容,这里只针对Chrome。

angular.js提供了ng-enter和ng-leave方法,用于当元素进入、消除时执行动画效果,注意中间无空格。

这样就可以以非常精简的代码实现比较基础的动画效果了

angular.js双向数据绑定实现动画特效

标签:

原文地址:http://my.oschina.net/u/2445805/blog/497670

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!