AngularJS中实现显示或隐藏动画效果的方式总结


Posted in Javascript onDecember 31, 2015

AngularJS 是一组用于创建单页Web应用的丰富框架,给构建丰富交互地应用带来了所有需要的功能。其中一项主要的特性就是Angular带来了对动画的支持。

本篇体验在AngularJS中实现在"显示/隐藏"这2种状态切换间添加动画效果。

通过CSS方式实现显示/隐藏动画效果

思路:

→npm install angular-animage
→依赖:var app = angular.module("app",["ngAnimate"]);
→controller中一个变量接收bool值
→界面中提供一个按钮,点击改变bool值
→界面中显示/隐藏的区域提供ng-if和controller中的bool值绑定

app.js

var app = angular.module("app",["ngAnimate"]);
app.controller("AppCtrl", function(){
 this.toggle = true;
})

index.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title></title>
 <link rel="stylesheet" href="../node_modules/bootstrap/dist/css/bootstrap.min.css"/>
 <link rel="stylesheet" href="styles.css"/>
</head>
<body ng-app="app" ng-controller="AppCtrl as app">
<button class="btn" ng-click="app.toggle=!app.toggle">Toggle Animation</button>
<div class="toggle" ng-if="app.toggle">Some content here</div>
<script src="../node_modules/angular/angular.min.js"></script>
<script src="../node_modules/angular-animate/angular-animate.min.js"></script>
<script src="app.js"></script>
</body>
</html>

styes.css

.toggle{
 -webkit-transition: linear 1s;
 -moz-transition: linear 1s;
 -ms-transition: linear 1s;
 -o-transition: linear 1s;
 transition: linear 1s;
}
.toggle.ng-enter{
 opacity: 0;
}
.toggle.ng-enter-active{
 opacity: 1;
}
.toggle.ng-leave{
 opacity: 1;
}
.toggle.ng-leave-active{
 opacity: 0;
}

通过animation方法实现显示/隐藏动画效果

app.animation("某个类名", function(){
 return {
  leave: function(element, done){
  },
  enter: function(element, done){
  }
 }
})

 animation可以在某个类名上加上leave,enter事件,leave和enter函数内部如何实现动画效果呢?可以通过TweenMax.min.js实现。

app1.js

ar app = angular.module("app",["ngAnimate"]);
app.controller("AppCtrl", function(){
 this.toggle = true;
})
app.animation(".toggle", function(){
 return {
  leave: function(element, done){
   //element.text("nooooo");
   TweenMax.to(element, 1, {opacity:0, onComplete:done})
  },
  enter: function(element, done){
   TweenMax.from(element, 1, {opacity:0, onComplete:done})
  }
 }
})

index1.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title></title>
 <link rel="stylesheet" href="../node_modules/topcoat/css/topcoat-desktop-light.min.css"/>
</head>
<body class="well-lg" ng-app="app" ng-controller="AppCtrl as app">
<button class="topcoat-button--large--cta" ng-click="app.toggle = !app.toggle">点我</button>
<hr/>
<div class="topcoat-notification toggle" ng-if="app.toggle">I'm too your to fade</div>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/gsap/1.18.0/TweenMax.min.js"></script>
<script src="../node_modules/angular/angular.min.js"></script>
<script src="../node_modules/angular-animate/angular-animate.min.js"></script>
<script src="app1.js"></script>
</body>
</html>

其中,npm install topcoat是一个很好的样式库。

使用direcive的方式实现显示/隐藏动画效果

是否可以在显示/隐藏的div部分加上一个属性,比如hide-me="app.isHidden",hide-me这个属性监控app.isHidden,根据值的变化情况再来决定是否显示。

app3.js

var app=angular.module('app',["ngAnimate"]);
app.controller("AppCtrl", function(){
 this.isHidden = false;
 this.fadeIt = function(){
  //TweenMax.to($("#my-badge"), 1, {opacity:0})
  this.isHidden = !this.isHidden;
 }
})
app.directive("hideMe", function($animate){
 return function(scope, element, attrs){
  scope.$watch(attrs.hideMe, function(newVal){
   if(newVal){
    //TweenMax.to(element, 1, {opacity:0});
    $animate.addClass(element, "fade");
   } else{
    $animate.removeClass(element, "fade");
   }
  })
 }
})
app.animation(".fade", function(){
 return {
  addClass: function(element, className){
   TweenMax.to(element, 1, {opacity:0});
  },
  removeClass: function(element, className){
   TweenMax.to(element, 1, {opacity:1});
  }
 }
})

index3.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title></title>
 <link rel="stylesheet" href="../node_modules/bootstrap/dist/css/bootstrap.min.css"/>
</head>
<body ng-app="app" ng-controller="AppCtrl as app">
<button id="my-button" class="btn-primary" ng-click="app.fadeIt()">Click to fade</button>
<div id="my-badge" class="badge" hide-me="app.isHidden">Fade me</div>
<script src="../node_modules/jquery/dist/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/gsap/1.18.0/TweenMax.min.js"></script>
<script src="../node_modules/angular/angular.min.js"></script>
<script src="../node_modules/angular-animate/angular-animate.min.js"></script>
<script src="app3.js"></script>
</body>
</html>

以上内容是小编给大家介绍的AngularJS中实现显示或隐藏动画效果的方式总结,希望大家喜欢。

Javascript 相关文章推荐
js综合应用实例简单的表格统计
Sep 03 Javascript
JS中实现简单Formatter函数示例代码
Aug 19 Javascript
深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
Dec 16 Javascript
jQuery+css实现的切换图片功能代码
Jan 27 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
Feb 21 Javascript
Bootstrap导航条学习使用(一)
Feb 08 Javascript
jQuery dateRangePicker插件使用方法详解
Jul 28 jQuery
vue-scroller记录滚动位置的示例代码
Jan 17 Javascript
js实现图片局部放大效果详解
Mar 18 Javascript
vue elementui tree 任意级别拖拽功能代码
Aug 31 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
Nov 06 Javascript
jQuery实现手风琴特效
Jan 11 jQuery
javascript数据类型验证方法
Dec 31 #Javascript
jQuery操作基本控件方法实例分析
Dec 31 #Javascript
javascript图片延迟加载实现方法及思路
Dec 31 #Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
Dec 31 #Javascript
详解javascript高级定时器
Dec 31 #Javascript
jQuery动画效果相关方法实例分析
Dec 31 #Javascript
js实现文字垂直滚动和鼠标悬停效果
Dec 31 #Javascript
You might like
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
2011/07/17 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
2016/03/18 PHP
PHP实现百度人脸识别
2019/05/06 PHP
JS中图片缓冲loading技术的实例代码
2013/08/29 Javascript
ext combobox动态加载数据库数据(附前后台)
2014/06/17 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
AngularJs  E2E Testing 详解
2016/09/02 Javascript
让div运动起来 js实现缓动效果
2017/07/06 Javascript
vue-自定义组件传值的实例讲解
2018/09/18 Javascript
JS使用cookie保存用户登录信息操作示例
2019/05/30 Javascript
jQuery实现轮播图效果
2019/11/26 jQuery
Nodejs实现微信分账的示例代码
2021/01/19 NodeJs
[02:55]含熏伴清风,风行者至宝、屠夫身心及典藏宝瓶二展示
2020/09/08 DOTA
跟老齐学Python之让人欢喜让人忧的迭代
2014/10/02 Python
python+opencv实现高斯平滑滤波
2020/07/21 Python
使用python实现语音文件的特征提取方法
2019/01/09 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
2019/02/21 Python
Python序列化pickle模块使用详解
2020/03/05 Python
Python 如何展开嵌套的序列
2020/08/01 Python
在线购买廉价折扣书籍和小说:BookOutlet.com
2018/02/19 全球购物
Spartoo瑞典:鞋子、包包和衣服
2018/09/15 全球购物
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
网络技术支持面试题
2013/04/22 面试题
制定岗位职责的原则
2013/11/08 职场文书
毕业生个人的求职信范文
2013/12/03 职场文书
教师自荐信范文
2013/12/09 职场文书
关于母亲节的感言
2014/02/04 职场文书
政风行风评议心得体会
2014/10/21 职场文书
谢师宴邀请函
2015/02/02 职场文书
2015年七一建党节活动总结
2015/03/20 职场文书
企业财务人员岗位职责
2015/04/14 职场文书
2016年小学“我们的节日·中秋节”活动总结
2016/04/05 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书
Vue详细的入门笔记
2021/05/10 Vue.js
redis实现共同好友的思路详解
2021/05/26 Redis
一级电子管军用接收机测评
2022/04/05 无线电