ng-animate
ng-animate
- Animations, driven by CSS 3
- Access to the Angular event loop
- Plays nice with Angular directives
Step 0: Setup Angular
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular-animate.min.js"></script>
<script>
angular.module('animateApp',['ngAnimate'])
.controller("MainController", function($scope){
});
</script>
There are two important changes
- Notice that we're including an extra script tag. Animate is a "module".
- Notice we're "injecting" ngAnimate when we create animateApp
Step 1: Use a directive
When ng-animate is included in your angular app, some directives automatically create special classes, used to drive the animations.
For example, ng-if will now use the classes:
becoming hidden: ng-leave ng-leave-active ng-animate
becoming shown: ng-enter ng-enter-active ng-animate
Step 2: Write the CSS
<button ng-init="hidden = false" ng-click="hidden = true" ng-if="hidden">
.ng-enter {
transition:0.5s linear all;
opacity:0;
}
.ng-enter.ng-enter-active {
opacity:1;
}
.ng-leave {
transition:0.5s linear all;
opacity:1;
}
.ng-leave.ng-leave-active {
opacity:0;
}
.ng-hide {
transition:0.5s linear all;
opacity:0;
}
Step 3: Get Specific
.fast-fade {
transition: 0.5s linear all;
}
.slow-fade {
transition: 3s linear all;
}
.ng-enter {
opacity: 0;
}
.ng-enter.ng-enter-active {
opacity: 1;
}
.ng-leave {
opacity: 1;
}
.ng-leave.ng-leave-active {
opacity: 0;
}
.ng-hide {
opacity: 0;
}
Step 3: Get Specific
.big {
font-size: 50px;
}
.small {
font-size: 40px;
}
.ng-animate.big-add, .ng-animate.small-add {
transition: 1s linear font-size;
}
<div ng-class="{big: toggleBoolean, small: !toggleBoolean}">
Recap
- Add the animate code with a <script> tag
- Inject ngAnimate to your app
- Use one of the Animation supported directives on some HTML
- Write plain old CSS3 transitions tied to the special ng-animate classes (ng-enter, ng-leave, etc.)
Questions?
Angular Animations
By Tyler Bettilyon
Angular Animations
- 1,348