博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AngularJS中实现显示或隐藏动画效果的3种方式
阅读量:6457 次
发布时间:2019-06-23

本文共 2621 字,大约阅读时间需要 8 分钟。

 

本篇体验在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

  
Some content here

 

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

  

I'm too your to fade

 

其中,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

  
Fade me

 

转载地址:http://grnzo.baihongyu.com/

你可能感兴趣的文章
MyBatis+Spring结合
查看>>
Office 365之SkyDrive Pro
查看>>
无缝滚动实现原理分析【公告栏】
查看>>
Java Web 高性能开发
查看>>
CentOS 4.4双网卡绑定,实现负载均衡
查看>>
Scala之柯里化和隐式转换
查看>>
获取androdmanifest里面的meta-data
查看>>
mysql拷贝表的几种方式
查看>>
用设计模式去掉没必要的状态变量 —— 状态模式
查看>>
健忘的正则
查看>>
[转]CMake快速入门教程:实战
查看>>
IntelliJ IDEA创建JavaWeb工程及配置Tomcat部署
查看>>
Markdown用法
查看>>
求最大值及其下标
查看>>
轮播插件swiper.js?
查看>>
网路流24题总结
查看>>
15 个 Android 通用流行框架大全
查看>>
IE8兼容@media和mp4视频的解决方案
查看>>
第二周总结
查看>>
概率图模型建模、学习、推理资料总结
查看>>