AngularJS中实现动画效果的方法


Posted in Javascript onJuly 28, 2016

AngularJS 动画

AngularJS 提供了动画效果,可以配合 CSS 使用。

AngularJS 使用动画需要引入 angular-animate.min.js 库。

<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular-animate.min.js"></script>

还需在应用中使用模型 ngAnimate:

<body ng-app="ngAnimate">

什么是动画?

动画是通过改变 HTML 元素产生的动态变化效果。

实例

勾选复选框隐藏 DIV:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
div {
 transition: all linear 0.5s;
 background-color: lightblue;
 height: 100px;
 width: 100%;
 position: relative;
 top: 0;
 left: 0;
}

.ng-hide {
 height: 0;
 width: 0;
 background-color: transparent;
 top:-200px;
 left: 200px;
}

</style>
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular-animate.min.js"></script>
</head>
<body ng-app="ngAnimate">

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

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

</body>
</html>

运行效果:

AngularJS中实现动画效果的方法

AngularJS中实现动画效果的方法

注意:应用中动画不宜太多,但合适的使用动画可以增加页面的丰富性,也可以更易让用户理解。

如果我们应用已经设置了应用名,可以把 ngAnimate 直接添加在模型中:

实例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
div {
 transition: all linear 0.5s;
 background-color: lightblue;
 height: 100px;
 width: 100%;
 position: relative;
 top: 0;
 left: 0;
}

.ng-hide {
 height: 0;
 width: 0;
 background-color: transparent;
 top:-200px;
 left: 200px;
}

</style>
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular-animate.min.js"></script>
</head>
<body ng-app="myApp">

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

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

<script>
var app = angular.module('myApp', ['ngAnimate']);
</script>

</body>
</html>

运行效果:

AngularJS中实现动画效果的方法

AngularJS中实现动画效果的方法

ngAnimate 做了什么?

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

ngAnimate 模型并不能使 HTML 元素产生动画,但是 ngAnimate 会监测事件,类似隐藏显示 HTML 元素 ,如果事件发生 ngAnimate 就会使用预定义的 class 来设置 HTML 元素的动画。

AngularJS 添加/移除 class 的指令:

ng-show
ng-hide
ng-class
ng-view
ng-include
ng-repeat
ng-if
ng-switch

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

其他指令会在进入 DOM 会添加 ng-enter 类,移除 DOM 会添加 ng-leave 属性。

当 HTML 元素位置改变时,ng-repeat 指令同样可以添加 ng-move 类 。

此外, 在动画完成后,HTML 元素的类集合将被移除。例如: ng-hide 指令会添加一下类:

ng-animate
ng-hide-animate
ng-hide-add (如果元素将被隐藏)
ng-hide-remove (如果元素将显示)
ng-hide-add-active (如果元素将隐藏)
ng-hide-remove-active (如果元素将显示)

使用 CSS 动画

我们可以使用 CSS transition(过渡) 或 CSS 动画让 HTML 元素产生动画效果,该部分内容你可以参阅我们的 CSS 过渡教程, CSS 动画教程。

CSS 过渡

CSS 过渡可以让我们平滑的将一个 CSS 属性值修改为另外一个:

实例

在 DIV 元素设置了 .ng-hide 类时,过渡需要花费 0.5 秒,高度从 100px 变为 0:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
div {
 transition: all linear 0.5s;
 background-color: lightblue;
 height: 100px;
}

.ng-hide {
 height: 0;
}
</style>
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular-animate.min.js"></script>
</head>
<body ng-app="myApp">

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

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

<script>
var app = angular.module('myApp', ['ngAnimate']);
</script>

</body>
</html>

CSS 动画

CSS 动画允许你平滑的修改 CSS 属性值:

实例

在 DIV 元素设置了 .ng-hide 类时, myChange 动画将执行,它会平滑的将高度从 100px 变为 0:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
@keyframes myChange {
 from {
   height: 100px;
 } to {
   height: 0;
 }
}

div {
 height: 100px;
 background-color: lightblue;
}

div.ng-hide {
 animation: 0.5s myChange;
}
</style>
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular-animate.min.js"></script>
</head>
<body ng-app="ngAnimate">

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

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


</body>
</html>

以上就是对AngularJS 动画的资料整理,有需要的小伙伴参考下。

Javascript 相关文章推荐
javascript之dhDataGrid Ver2.0.0代码
Jul 01 Javascript
JS维吉尼亚密码算法实现代码
Nov 09 Javascript
js实现按一下删除键删除整个单词附demo
Sep 05 Javascript
使用jquery+CSS实现控制打印样式
Dec 31 Javascript
React.js入门实例教程之创建hello world 的5种方式
May 11 Javascript
AngularJS入门教程之REST和定制服务详解
Aug 19 Javascript
babel基本使用详解
Feb 17 Javascript
jquery DataTable实现前后台动态分页
Jun 17 jQuery
前端html中jQuery实现对文本的搜索功能并把搜索相关内容显示出来
Nov 14 jQuery
通过实例解析js简易模块加载器
Jun 17 Javascript
在layui中layer弹出层点击事件无效的解决方法
Sep 05 Javascript
Vue的transition-group与Virtual Dom Diff算法的使用
Dec 09 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
Jul 28 #Javascript
AngularJS中的包含详细介绍及实现示例
Jul 28 #Javascript
AngularJS Bootstrap详细介绍及实例代码
Jul 28 #Javascript
JavaScript中windows.open()、windows.close()方法详解
Jul 28 #Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
Jul 28 #Javascript
AngularJS中的API(接口)简单实现
Jul 28 #Javascript
js 声明数组和向数组中添加对象变量的简单实例
Jul 28 #Javascript
You might like
php 无限极分类
2008/03/27 PHP
php学习之变量的使用
2011/05/29 PHP
PHP小教程之实现链表
2014/06/09 PHP
php一维二维数组键排序方法实例总结
2014/11/13 PHP
PHP如何使用Memcached
2016/04/05 PHP
CI框架文件上传类及图像处理类用法分析
2016/05/18 PHP
php readfile()修改文件上传大小设置
2017/08/11 PHP
PHP Cli 模式设置进程名称的方法
2019/06/12 PHP
如何用javascript控制上传文件的大小
2006/10/26 Javascript
给moz-firefox下添加IE方法和属性
2007/04/10 Javascript
Array.prototype.slice 使用扩展
2010/06/09 Javascript
理解Javascript闭包
2013/11/01 Javascript
jQuery中:only-child选择器用法实例
2015/01/03 Javascript
JavaScript设计模式初探
2016/01/07 Javascript
javascript中select下拉框的用法总结
2016/01/07 Javascript
Javascript的无new构建实例详解
2016/05/15 Javascript
js 获取范围内的随机数实例代码
2016/08/02 Javascript
jQuery实现的自定义滚动条实例详解
2016/09/20 Javascript
JavaScript中数组slice和splice的对比小结
2016/09/22 Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
2019/03/05 Javascript
[51:15]完美世界DOTA2联赛PWL S2 PXG vs Magma 第一场 11.21
2020/11/24 DOTA
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
Python实现以时间换空间的缓存替换算法
2016/02/19 Python
Python算法之求n个节点不同二叉树个数
2017/10/27 Python
python爬虫之urllib库常用方法用法总结大全
2018/11/14 Python
Python基于DB-API操作MySQL数据库过程解析
2020/04/23 Python
python logging 重复写日志问题解决办法详解
2020/08/04 Python
python里glob模块知识点总结
2021/01/05 Python
Python数据模型与Python对象模型的相关总结
2021/01/26 Python
html5 input属性使用示例
2013/06/28 HTML / CSS
微软英国官方网站:Microsoft英国
2016/10/15 全球购物
我的珠宝盒:Ma boîte à bijoux
2019/08/27 全球购物
数学国培研修感言
2014/02/13 职场文书
会计人员岗位职责
2014/03/19 职场文书
师范类求职信
2014/06/21 职场文书
违反单位工作制度检讨书
2014/10/25 职场文书