Angular - - $animate

$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() {
        var vm = this;
        vm.items = [
           { value: "AAAAA" },
           { value: "BBBBB" },
           { value: "CCCCC" },
           { value: "DDDDD" },
           { value: "EEEEE" }
        ];
        vm.addItem = function () {
            vm.items.push(vm.item);
            vm.item = {};
        };
        vm.removeItem = function (index) {
            vm.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() {
        var vm = this;
        vm.items = [
           { value: "AAAAA" },
           { value: "BBBBB" },
           { value: "CCCCC" },
           { value: "DDDDD" },
           { value: "EEEEE" }
        ];
        vm.addItem = function () {
            vm.items.push(vm.item);
            vm.item = {};
        };
        vm.removeItem = function (index) {
            vm.items.splice(index, 1);
        };
        vm.bottomToTop = function () {
            vm.items.unshift(vm.items.pop());
        };
     }
  }());
</script>
</body>
</html>

关于ngAnimate动画,在google找了好多资料,主要是因为$animate的方法的使用。仅仅是css3的animate使用 和.animation()使用,这个不难,资料也多,以前也写过这些效果...  但是$animate的method使用没找到多少资料,然后在google找了好久,搜的是$animate关键字,好几次没找到。准备自己测试着 写,在controller写出来发现不能绑定到哪个DOM元素去使用,然后想到应该可能是在directive使用的,于是找指令中的$animate 使用资料,终于找到了一些用法。哈哈哈...这里就只用$animate.enter和$animate.leave做示范好了,其他的方法都是类似使 用...

时间: 2024-10-17 16:30:31

Angular - - $animate的相关文章

css3动画animate.css的使用

简介 animate.css 是一个来自国外的 CSS3 动画库,它预设了抖动(shake).闪烁(flash).弹跳(bounce).翻转(flip).旋转(rotateIn/rotateOut).淡入淡出(fadeIn/fadeOut)等多达 60 多种动画效果,几乎包含了所有常见的动画效果. 虽然借助 animate.css 能够很方便.快速的制作 CSS3 动画效果,但还是建议看看 animate.css 的代码,也许你能从中学到一些东西. 在使用animate.css的时候通常都会搭配

JS animate动画

<!DOCTYPE html><html lang="zh-cn"><head> <meta charset="utf-8"> <title></title> <style> #senda,#sendb{ position: relative; } </style></head><body> <div id="senda"

齐全的CSS3动画库animate.css

animate.css 是一个来自国外的 CSS3 动画库,它预设了抖动(shake).闪烁(flash).弹跳(bounce).翻转(flip).旋转(rotateIn/rotateOut).淡入淡出(fadeIn/fadeOut)等多达 60 多种动画效果,几乎包含了所有常见的动画效果. 查看演示

jQuery--自定义动画animate()

语法结构 animate(params,speed,callback) params:包含一个样式属性及值的映射.比如{property1:'value1',property:'value2',......} speed:速度参数,可选. callback:在动画完成时执行的函数,可选 1.自定义简单动画,使元素在3秒(3000毫秒),向右移动500像素 <!DOCTYPE html> <html lang="en"> <head> <meta

jQuery基础(动画篇 animate,显示隐藏,淡入淡出,下拉切换)

1.jQuery中隐藏元素的hide方法 让页面上的元素不可见,一般可以通过设置css的display为none属性.但是通过css直接修改是静态的布局,如果在代码执行的时候,一般是通过js控制元素的style属性,这里jQuery提供了一个快捷的方法.hide()来达到这个效果   $elem.hide() 提供参数: .hide( options ) 当提供hide方法一个参数时,.hide()就会成为一个动画方法..hide()方法将会匹配元素的宽度,高度,以及不透明度,同时进行动画操作

可用于jquery animate()方法的css属性

* backgroundPosition * borderWidth * borderBottomWidth * borderLeftWidth * borderRightWidth * borderTopWidth * borderSpacing * margin * marginBottom * marginLeft * marginRight * marginTop * outlineWidth * padding * paddingBottom * paddingLeft * paddi

[React Native] Animate Styles of a React Native View with Animated.timing

In this lesson we will use Animated.timing to animate the opacity and height of a View in our React Native application. This function has attributes that you can set such as easing and duration. import React, {Component} from 'react'; import {Text, V

简单animate方法的封装

function animate(ele,json,fn){ clearInterval(ele.timer); ele.timer = setInterval(function () { var bool = true; console.log(1); for(var k in json){ if(k == "opacity"){ var leader = getStyle(ele,k)*100||0; var step = (json[k]*100-leader)/10; step

解析jQuery效果函数animate()

1.参数说明: animate(params,[speed],[easing],[fn]) params:一组包含作为动画属性和终值的样式属性和及其值的集合<br/> speed:三种预定速度之一的字符串("slow"600ms,"normal"400ms, or "fast"200ms)或表示动画时长的毫秒数值(如:1000)<br/> easing:要使用的擦除效果的名称(需要插件支持).默认jQuery提供"

Animate.css让添加CSS动画像喝水一样容易

animate.css是一堆很酷的,有趣的,跨浏览器的动画效果库,你可以随意在你的项目中使用.用在你想要突出的任何地方,如主页,滑块,这像喝水一样容易,迷死人了. 用法 在您的网站上使用animate.css,只要简单地把样式表插入到文档中的<HEAD>中,并为需要动画的元素添加一个CSS类名即可,以及动画的名称.就是这样!你就有了一个CSS动画效果.超强! <head>   <link rel="stylesheet" href="animat