$animate

$animate服务提供了基本的DOM操作功能如在DOM里插入、移除和移动元素,以及添加和删除类。这个服务是ngAnimate的核心服务,为CSS和Javascript提供了高档次的动画。

$animate在Angular核心都是有效的,无论如何,这个服务为了支持所有动画须包含ngAnimate模块。否则,$animate只能做简单的DOM操作。

方法

enter(element,parent,after,[done]);

在DOM中,将一个元素插入到元素后面或作为第一个子元素插入父元素。一旦完成,done()将会被回调(如果done()存在)。

element:被插入到DOM的元素。

parent:将会被插入子元素的父元素。(如果下一个元素不存在)。

after:后面插入元素的兄弟元素。

done:当元素被插入DOM后执行的回调函数。

leave(element,[done]);

从DOM中移除元素。一旦完成,done()将会被调用(如果done()存在)。

element:将会被从DOM中移除的元素。

done:当元素被从DOM删除后执行的回调函数。

move(element,parent,after,[done]);

将提供的元素在DOM中移动位置,在父元素的内部或者兄弟元素之间。一旦完成,该done()将会被回调(如果done()存在)

element:在DOM中被移动的元素。

parent:将会被插入子元素的父元素。(如果下一个元素不存在)。

after:后面被放置元素的兄弟元素。

done:当元素在DOM中被移动后执行的回调函数。

addClass(element,className,[done]);

给提供的元素添加提供的CSS类名。一旦完成,done()将会被调用(如果done()存在)。

element:将会被添加class名称的元素。

className:将会被提供的css类。

done:当css类被添加到元素中后执行的回调函数。

removeClass(element,className,[done]);

给提供的元素移除提供的CSS类名。一旦完成,done()将会被调用(如果done()存在)。

element:将会被移除class名称的元素。

className:将会被移除的css类。

done:当css类被从元素中移除后执行的回调函数。

setClass(element,add,remove,[done]);

在元素中添加或者移除给定的css类名。一旦完成,done()将会被调用(如果done()存在)。

element:被设置CSS类的元素。

add:将会被添加到元素的CSS类。

remove:将会从元素上移除的CSS类。

done:当元素中的css类被设置后执行的回调函数。

实现animate动画代码1:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>$animate</title>
<script src="http://cdn.bootcss.com/jquery/3.0.0-alpha1/jquery.js"></script>
<script src="../angular-1.4.7/angular.js"></script>
<script src="../angular-1.4.7/angular-animate.js"></script>
<style type="text/css" media="screen">
.fade { width: 100px;
height: 100px;
background-color: #ff9933;
transition: 1s linear all;
-webkit-transition: 1s linear all; }
.fade.ng-enter { opacity: 0; }
.fade.ng-enter.ng-enter-active { opacity: 1; }
.fade.ng-leave { opacity: 1; }
.fade.ng-leave.ng-leave-active { opacity: 0; }
</style>
</head>
<body ng-app="Demo" ng-controller="testCtrl as ctrl">
<button my-dir>Fade in/out</button>
<script type="text/javascript">
(function(){
var app = angular.module('Demo', ["ngAnimate"])
.directive("myDir", ["$animate", "$compile", myDir])
.controller('testCtrl',angular.noop);
function myDir($animate, $compile) {
function link(scope, element, attr) {
var isAppended = false;
var parent = element.parent();
var box;
element.on('click', function () {
isAppended = !isAppended;
if (isAppended) {
box = angular.element('<div class="fade"></div>');
scope.$apply($animate.enter(box, parent, element, function () {
console.log("Done entering");
}));
} else {
scope.$apply($animate.leave(box, function () {
console.log("Done leaving");
}));
}
});
}
return {
link: link
};
}
}());
</script>
</body>
</html>

实现animate动画代码2:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>$animate</title>
<script src="http://cdn.bootcss.com/jquery/3.0.0-alpha1/jquery.js"></script>
<script src="../angular-1.4.7/angular.js"></script>
<script src="../angular-1.4.7/angular-animate.js"></script>
<style type="text/css" media="screen">
.fade { transition: 1s linear all; -webkit-transition: 1s linear all; }
.fade.ng-enter { opacity: 0; }
.fade.ng-enter.ng-enter-active { opacity: 1; }
.fade.ng-leave { opacity: 1; }
.fade.ng-leave.ng-leave-active { opacity: 0; }
</style>
</head>
<body ng-app="Demo" ng-controller="testCtrl as ctrl">
<div>
<h1>Test List</h1>
<ul>
<li ng-repeat="item in ctrl.items" class="fade">{{item.value}}
<a href="javascript:void(0);" ng-click="ctrl.removeItem($index)">close</a>
</li>
</ul>
<br />
<input type="text" ng-model="ctrl.item.value" />
<button ng-click="ctrl.addItem()">Add Item</button>
</div>
<script type="text/javascript">
(function(){
var app = angular.module('Demo', ["ngAnimate"])
.controller('testCtrl',testCtrl);
function testCtrl() {
this.items = [
{ value: "AAAAA" },
{ value: "BBBBB" },
{ value: "CCCCC" },
{ value: "DDDDD" },
{ value: "EEEEE" }
];
this.addItem = function () {
this.items.push(this.item);
this.item = {};
};
this.removeItem = function (index) {
this.items.splice(index, 1);
};
}
}());
</script>
</body>
</html>

实现animate动画代码3:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>$animate</title>
<script src="http://cdn.bootcss.com/jquery/3.0.0-alpha1/jquery.js"></script>
<script src="../angular-1.4.7/angular.js"></script>
<script src="../angular-1.4.7/angular-animate.js"></script>
</head>
<body ng-app="Demo" ng-controller="testCtrl as ctrl">
<div>
<h1>Test List</h1>
<ul>
<li ng-repeat="item in ctrl.items" class="fade">{{item.value}}
<a href="javascript:void(0);" ng-click="ctrl.removeItem($index)">remove</a>
</li>
</ul>
<br />
<input type="text" ng-model="ctrl.item.value" />
<button ng-click="ctrl.addItem()">Add item</button>
<br />
<button ng-click="ctrl.bottomToTop()">我要上头条!!!</button>
</div>
<script type="text/javascript">
(function(){
var app = angular.module('Demo', ["ngAnimate"])
.animation('.fade', fade)
.controller('testCtrl',testCtrl);
function fade() {
return {
enter: function (element, done) {
element.css('display', 'none');
$(element).fadeIn(1000, function () {
done();
});
},
leave: function (element, done) {
$(element).fadeOut(1000, function () {
done();
});
},
move: function (element, done) {
element.css('display', 'none');
$(element).slideDown(500, function () {
done();
});
}
}
}
function testCtrl() {
this.items = [
{ value: "AAAAA" },
{ value: "BBBBB" },
{ value: "CCCCC" },
{ value: "DDDDD" },
{ value: "EEEEE" }
];
this.addItem = function () {
this.items.push(this.item);
this.item = {};
};
this.removeItem = function (index) {
this.items.splice(index, 1);
};
this.bottomToTop = function () {
this.items.unshift(this.items.pop());
};
}
}());
</script>
</body>
</html>

更多效果,可在google搜"$animate",百度资料太少了额,质量也不行...

AngularJs $animate 让页面动起来的更多相关文章

  1. 从零开始学习jQuery (七) jQuery动画-让页面动起来!

    一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些许秘籍. 开发人员一直痛疼做动画. 但是有了jQuery你 ...

  2. 玩转HTML5移动页面(动效篇)

    原文:http://www.grycheng.com/?p=458 作为一名前端,在拿到设计稿时你有两种选择: 1.快速输出静态页面 2.加上高级大气上档次狂拽炫酷屌炸天的动画让页面动起来 作为一个有 ...

  3. 转:玩转HTML5移动页面(动效篇)

    作为一名前端,在拿到设计稿时你有两种选择: 1.快速输出静态页面 2.加上高级大气上档次狂拽炫酷屌炸天的动画让页面动起来 作为一个有志向的前端,当然是选2啦!可是需求时间又很短很短,怎么办呢? 这次就 ...

  4. 玩转HTML5移动页面(动效篇)(转载)

    本文转载自: 玩转HTML5移动页面(动效篇)

  5. 用CSS3动画,让页面动起来

    以前就听说过有个库,叫animate.css,但是自己并没有在实际项目中使用过,这次正好要做个招聘页面,得以利用一下这个库,在经常会卡顿的UC浏览器中也能流畅执行. 扫描下面的二维码,可以看到在线的d ...

  6. 拒绝枯燥,有意思的 Loading 页面动效设计

    互联网时代,网络“提速”日益频繁,人们打开Web或软件的速度越来越快,一般页面缓冲和加载地过程也是几不可查.然而,在某些情况下,例如软件急需加载大量页面,首页急需加载大量内容,用户下载文件过大,甚至是 ...

  7. HTML基础五-starrysky页面动起来

    Starrysky前端框架 链接:https://pan.baidu.com/s/1P8mPrHZjyRtzw1NWnAx-9w 提取码:cjl5 接口文档:https://www.showdoc.c ...

  8. JQuery 实践--让页面动起来

    获取和设置元素特性特性属性:是指DOM元素中能够和HTML元素中某个特性对应得上的属性.通常JS特性属性的名称与对应的特性一一匹配,但class <=>className操作特性还是操作属 ...

  9. html页面动效

    找到了一个喜欢的黑客帝国动效"https://files.cnblogs.com/files/blogs/718959/codeMatrix-master.zip?t=1643081202& ...

随机推荐

  1. lecture10-模型的结合与全贝叶斯学习

    这是Hinton的第10课 这节课有两篇论文可以作为背景或者课外读物<Adaptive mixtures of local experts>和<Improving neural ne ...

  2. 为什么带网格(mesh)的模型添加了刚体Rigidbody和MeshCollider,还是会从地板穿过去?

    两个Gameobject 放置在空中, 一个是Cube,一个是茄子模型 Cube的Collider 是Box Collider , 茄汁的Collider 是mesh collider, 他们都添加了 ...

  3. jquery总结

    id选择器只能选定第一个满足条件的元素 class选择器可以选定一类满足条件的元素 text(),html(),val(),attr()等操作类型的函数,作用对象是前面选择器选定的元素.选定的元素可能 ...

  4. Vim块注释

    如何在VIM下快速注释块代码 添加块注释 01.进入视图模式 v进入视图模式,控制方向键选中注释的代码 02.进入列模式并插入# ctrl+v进入列,I插入注释# 03.全部注释 esc两次自动全部注 ...

  5. 【Android 开发】: Android 消息处理机制之一: Handler 与 Message

    最近几讲内容,我们学习了Android中关于多线程的一些知识,上一讲我们讲解了异步任务 AsyncTask 的操作,Android中还提供了其他的线程操作,如Handler Message Messa ...

  6. python基础-PyCharm设置作者信息模板_修改解释器_设置软件UTF-8编码

    一.PyCharm 设置作者信息模板 1.File---Settings---在搜索框中搜索:File and Code Templates---Python scripts #!/usr/bin/e ...

  7. Android Studio2.0 教程MAC版 -快捷键篇

    本文转至 Android Studio2.0 教程从入门到精通MAC版 - 提高篇 ( OPEN 开发经验库) 第二篇我们开发了一个Hello World应用,并介绍Android Sutdio的界面 ...

  8. Java设计模式(三) 装饰模式

    装饰模式:动态的将责任附加到对象上,想要扩展功能,装饰者提供有别于继承的另一种选择. 1,创建顶级类 package com.pattern.decorate; public abstract cla ...

  9. 【BZOJ 2594】【WC 2006】水管局长数据加强版

    离线后倒过来做,这样就跟魔法森林差不多了,缩边为点就可以统计边的权值了. 1A真是爽,可惜常数炸上了天,这是滥用stl容器和无脑link,cut的后果 #include<map> #inc ...

  10. C#-WinForm-跨窗体 构造函数传值 及应用—登录式窗口传值、如何关闭主页面时关闭应用程序、如何打开唯一窗口—★★★★★五星重量级

    构造函数可以传任意类型的值,并可以同时传多个值 结构函数传值的初步应用--简单的登陆式界面 现在我有两个窗体Form3和Form4,如下,如何点击Form3中的按钮后,打开Form4并将Form3中的 ...