天天看點

AngularJS 動畫

AngularJS 提供了動畫效果,可以配合 CSS 使用。

AngularJS 使用動畫需要引入 angular-animate.min.js 庫。

還需在應用中使用模型 ngAnimate:

動畫是通過改變 HTML 元素産生的動态變化效果。

勾選複選框隐藏 DIV:

<body ng-app="ngAnimate">

隐藏 DIV: <input type="checkbox" ng-model="myCheck">

<div ng-hide="myCheck"></div>

</body>

AngularJS 動畫

應用中動畫不宜太多,但合适的使用動畫可以增加頁面的豐富性,也可以更易讓使用者了解。

如果我們應用已經設定了應用名,可以把 ngAnimate 直接添加在模型中:

<body ng-app="myApp">

<h1>隐藏 DIV: <input type="checkbox" ng-model="myCheck"></h1>

<script>

var app =

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

</script>

ngAnimate 模型可以添加或移除 class 。

ngAnimate 模型并不能使 HTML 元素産生動畫,但是 ngAnimate 會監測事件,類似隐藏顯示 HTML 元素 ,如果事件發生 ngAnimate 就會使用預定義的 class 來設定 HTML 元素的動畫。

AngularJS 添加/移除 class 的指令:

<code>ng-show</code>

<code>ng-hide</code>

<code>ng-class</code>

<code>ng-view</code>

<code>ng-include</code>

<code>ng-repeat</code>

<code>ng-if</code>

<code>ng-switch</code>

<code>ng-show</code> 和 <code>ng-hide</code> 指令用于添加或移除 <code>ng-hide</code> class 的值。

其他指令會在進入 DOM 會添加 <code>ng-enter</code> 類,移除 DOM 會添加 <code>ng-leave</code> 屬性。

當 HTML 元素位置改變時,<code>ng-repeat</code> 指令同樣可以添加 <code>ng-move</code> 類 。

此外, 在動畫完成後,HTML 元素的類集合将被移除。例如:

<code>ng-hide</code> 指令會添加以下類:

<code>ng-animate</code>

<code>ng-hide-animate</code>

<code>ng-hide-add</code> (如果元素将被隐藏)

<code>ng-hide-remove</code> (如果元素将顯示)

<code>ng-hide-add-active</code> (如果元素将隐藏)

<code>ng-hide-remove-active</code> (如果元素将顯示)

我們可以使用 CSS transition(過渡) 或 CSS 動畫讓 HTML 元素産生動畫效果,該部分内容你可以參閱我們的

CSS 過渡教程,

CSS 動畫教程。

CSS 過渡可以讓我們平滑的将一個 CSS 屬性值修改為另外一個:

在 DIV 元素設定了 <code>.ng-hide</code> 類時,過渡需要花費 0.5 秒,高度從 100px 變為 0:

&lt;style&gt;

div {

    transition: all linear 0.5s;

background-color: lightblue;

    height: 100px;

}

.ng-hide

{

    height: 0;

&lt;/style&gt;

CSS 動畫允許你平滑的修改 CSS 屬性值:

在 DIV 元素設定了 <code>.ng-hide</code> 類時, <code>myChange</code>

動畫将執行,它會平滑的将高度從 100px 變為 0:

@keyframes myChange {

    from {

height: 100px;

    } to {

height: 0;

    }

    background-color: lightblue;

div.ng-hide {

    animation: 0.5s myChange;