ngAnimateを使うには
まずangular.jsとangular-animate.jsを読み込む。
https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-animate.js https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-animate.min.js
HTMLコードを記述
ボタンを押すたびに赤いボックスがアニメーションで表示・非表示を切り替えるサンプルを作成するのでまずは下記のHTMLコードを記述。
<div ng-app="app" ng-controller="Ctrl"> <button ng-click="toggle()">表示・非表示</button> <div class="box" ng-show="flag"></div> </div>
JavaScriptコードを記述
angular.module("app", ["ngAnimate"])でAnimateモジュール導入。
表示・非表示のために$scope.flag = true;を記述。これがfalseのときは非表示。$scope.flag = !$scope.flag;と記述することでクリックするたびにtrue -> false -> true -> false と切り替わる。
var app = angular.module("app", ["ngAnimate"]); app.controller('Ctrl', function ($scope) { $scope.flag = true; $scope.toggle = function() { $scope.flag = !$scope.flag; }; });
CSSコードを記述
Animateモジュールが導入されていればng-show(またはng-hide)の真偽値が変更されたときにCSSクラスが追加される。アニメーションはこの追加されるCSSクラスを利用して実装する。
追加されるCSSクラスは以下の通り。
/* 非表示開始 */ .ng-hide-add { transition: 1s; opacity: 1; } /* 非表示終了 */ .ng-hide-add-active { opacity: 0; } /* 表示開始 */ .ng-hide-remove { transition: 1s; opacity: 0; } /* 表示終了 */ .ng-hide-remove-active { opacity: 1; }
CSSのコメントにも書いたがそれぞれ非表示開始時、非表示終了時、表示開始時、表示終了時のCSSクラスになっている。
例えばng-showがtrueからfalseになるときは.ng-hide-add、.ng-hide-add-activeが付き、ng-showがfalseからtrueになるときは.ng-hide-remove、.ng-hide-remove-activeが付く。(.ng-○○-activeは一瞬遅れて追加されるため、これを利用してアニメーションを実装する)
AngularJSのngAnimateのngShowのサンプル