Angular插件:動畫插件ngAnimate

ngAnimate插件是做什么的?

ngAnimate插件如其名字一樣是為元素提供動畫的

怎么定義動畫?

第一步必須是引入插件

<script src="http://cdn.bootcss.com/angular.js/1.3.20/angular.js"></script>
<script src="http://cdn.bootcss.com/angular.js/1.3.20/angular-animate.min.js"></script>

第二步讓app引入(依賴)這個插件

var appH5=angular.module("app",['ngAnimate']);
appH5.controller("myTabCtrl",['$scope',function($scope){
         $scope.isShow=true;
}])
<body ng-controller="myTabCtrl">
<input type="checkbox"  ng-model="isShow" />
<div class="new-item" ng-if="isShow">我是要動畫的元素</div>
</body>

添加動畫的第一種方式:通過css3.0的方式

  • 樣式定義示例
.new-item{
  padding: 10px;
  border-bottom: 1px solid #ededed;
  font-size: 1.5rem;
  position: relative;
  transition:all 0.5s;
}
/*元素進入頁面初始狀態(tài)*/
.new-item.ng-enter{
  top: 10px;
}
/*進入頁面動畫后的最終狀態(tài)*/
.new-item.ng-enter-active{
  top: 0px;
}
/*元素移出頁面初始狀態(tài)*/
.new-item.ng-leave{
  opacity:1;
}
/*移出頁面動畫后的最終狀態(tài)*/
.new-item.ng-leave-active{
  opacity:0;
}
//html
<div class="new-item">我是要動畫的元素</div>
  • 為什么添加樣式就可以產(chǎn)生動畫?

    當元素進入頁面時币呵,angular會給元素依次添加上class ng-enter 和 ng-enter-active,相信大家都知道,CSS3.0在一個元素定義了 transition 之后逗威,兩個相同屬性的屬性值改變就會用過渡動畫來實現(xiàn)屬性值的改變。當元素移除頁面時也是同理岔冀,所以我們只要定義元素的四個class來定義這四個時間點的狀態(tài)凯旭,其他的就交給angular來做就好了。

  • 支持這種方式定義動畫的指令有哪些使套?
    ng-if罐呼、ng-view、ng-repeat侦高、ng-include嫉柴、ng-switch
    這幾個指令是通過新建節(jié)點和移除節(jié)點來實現(xiàn)元素的顯示和隱藏的

  • ng-repate的不同之處

.new-item{
  padding: 10px;
  border-bottom: 1px solid #ededed;
  font-size: 1.5rem;
  position: relative;
  transition:all 0.5s;
}
.new-item.ng-enter{
  top: 10px;
}
.new-item.ng-enter-active{
  top: 0px;
}
.new-item.ng-enter-stagger{/*ng-repeat提供了這個樣式,來實現(xiàn)每一個item條目的依次執(zhí)行某個動畫 */
  animation-delay:100ms;
  -webkit-animation-delay:100ms; 
}
.new-item.ng-leave{
  opacity:1;
}
.new-item.ng-leave-active{
  opacity:1;
}
.new-item.ng-leave-stagger{
  animation-delay:100ms;
  -webkit-animation-delay:100ms; 
}
//html
<div class="new-item" ng-repeat="new in news">{{new.title}}</div>

剛才說通過新建和刪除元素來實現(xiàn)的指令是可以進行動畫的奉呛,那么只是更改樣式顯示或者隱藏元素的指令(ng-show ng-hide ng-class )能不能進行動畫呢计螺?

.new-item{
    padding: 10px;
    border-bottom: 1px solid #ededed;
    font-size: 1.5rem;
    position: relative;
    transition:all 2s;
}
/*元素隱藏初始狀態(tài)*/
.new-item.ng-hide-add{
    opacity:1;
}
/*隱藏操作動畫后的最終狀態(tài)*/
.new-item.ng-hide-add-active{
    opacity:0;
}
/*元素顯示初始狀態(tài)*/
.new-item.ng-hide-remove{
    top: 10px;
}
/*顯示操作動畫后的最終狀態(tài)*/
.new-item.ng-hide-remove-active{
    top: 0px;
}

添加動畫的第二種方式:通過js的方式

//ng-if、ng-view瞧壮、ng-repeat登馒、ng-include、ng-switch 指令
appH5.animation(".new-item",function(){
    return {
        leave:function(element,done){
            //第一個參數(shù)是運動的元素馁痴,第二個參數(shù)是動畫完成后的回調(diào),必須調(diào)用的肺孤,不調(diào)用則指令功能不會執(zhí)行
            $(element).animate({width:0,height:0},1000,done);//借助jQuery
        },
        enter:function(element,done){
            $(element).css({width:100,height:100});//借助jQuery
            $(element).animate({width:100,height:100},1000,done)//借助jQuery
        }
    }
});

//ng-show ng-hide ng-class 指令
appH5.animation(".new-item",function(){
    return {
        addClass:function(element,sClass,done){
            //第一個參數(shù)是運動的元素
            //第二個參數(shù)是元素的樣式-->一般用不上
            //第三個參數(shù)是動畫完成后的回調(diào)罗晕,必須調(diào)用的济欢,不調(diào)用則指令功能不會執(zhí)行
            $(element).animate({width:0,height:0},1000,done)
        },
        removeClass:function(element,sClass,done){
            $(element).css({width:100,height:100});
            $(element).animate({width:100,height:100},1000,done)
        }
    }
});
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市小渊,隨后出現(xiàn)的幾起案子法褥,更是在濱河造成了極大的恐慌,老刑警劉巖酬屉,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件半等,死亡現(xiàn)場離奇詭異,居然都是意外死亡呐萨,警方通過查閱死者的電腦和手機杀饵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谬擦,“玉大人切距,你說我怎么就攤上這事〔以叮” “怎么了谜悟?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長北秽。 經(jīng)常有香客問我葡幸,道長,這世上最難降的妖魔是什么贺氓? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任蔚叨,我火速辦了婚禮,結果婚禮上掠归,老公的妹妹穿的比我還像新娘缅叠。我一直安慰自己,他們只是感情好虏冻,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布肤粱。 她就那樣靜靜地躺著,像睡著了一般厨相。 火紅的嫁衣襯著肌膚如雪领曼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天蛮穿,我揣著相機與錄音庶骄,去河邊找鬼。 笑死践磅,一個胖子當著我的面吹牛单刁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播府适,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼羔飞,長吁一口氣:“原來是場噩夢啊……” “哼肺樟!你這毒婦竟也來了?” 一聲冷哼從身側響起逻淌,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤么伯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后卡儒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體田柔,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年骨望,在試婚紗的時候發(fā)現(xiàn)自己被綠了硬爆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡锦募,死狀恐怖摆屯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情糠亩,我是刑警寧澤虐骑,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站赎线,受9級特大地震影響廷没,放射性物質發(fā)生泄漏。R本人自食惡果不足惜垂寥,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一颠黎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧滞项,春花似錦狭归、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至戏仓,卻和暖如春疚宇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赏殃。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工敷待, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人仁热。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓榜揖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子举哟,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容

  • ngAnimate插件是做什么的钳幅? ngAnimate插件如其名字一樣是為元素提供動畫的。 怎么定義動畫炎滞? 第一步...
    小楓學幽默閱讀 903評論 0 3
  • AngularJS是什么?AngularJs(后面就簡稱ng了)是一個用于設計動態(tài)web應用的結構框架诬乞。首先册赛,它是...
    200813閱讀 1,590評論 0 3
  • ng-model 指令ng-model 指令 綁定 HTML 元素 到應用程序數(shù)據(jù)。ng-model 指令也可以:...
    壬萬er閱讀 863評論 0 2
  • 在本書的前面章節(jié),已討論過處理事務的邏輯順序票堵,它們分別是橫向管理系統(tǒng)5個步驟和縱向管理系統(tǒng)5個步驟扼睬,本章內(nèi)容主要探...
    悅文識己閱讀 792評論 2 0
  • 又有兩天沒寫、一直說很累其實就是懶悴势、今天看到微博上有人寫信給一年后的自己忽然也很想寫一些東西下來給一年后的自己...