发表于: 2020-03-28 23:41:20

1 1696


今天完成的事情:今天学习了AngularJS 动画的相关内容
明天计划的事情:继续学习AngularJS大的后续内容
遇到的问题:实际操作还是太少需要多加练习和理解
收获:AngularJS 动画

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

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

<script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular-animate.min.js"></script>

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

<body ng-app="ngAnimate">

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

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
div {
  transitionall linear 0.5s;
  background-colorlightblue;
  height100px;
  width100%;
  positionrelative;
  top0;
  left0;
}

.ng-hide {
  height0;
  width0;
  background-colortransparent;
  top:-200px;
  left200px;
}

</style>
<script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js"></script>
<script src="https://cdn.staticfile.org/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>

运行结果

点击收起

会有一个收起的动画过程

应用中动画不宜太多,但合适的使用动画可以增加页面的丰富性

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

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <style>
    div {
      transitionall linear 0.5s;
      background-colorlightblue;
      height100px;
      width100%;
      positionrelative;
      top0;
      left0;
    }

    .ng-hide {
      height0;
      width0;
      background-colortransparent;
      top-200px;
      left200px;
    }
  </style>
  <script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js"></script>
  <script src="https://cdn.staticfile.org/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>

运行结果

效果是一样的

点击收起

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 过渡可以让我们平滑的将一个 CSS 属性值修改为另外一个:例如

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <style>
    div {
      transitionall linear 0.5s;
      background-colorlightblue;
      height100px;
    }

    .ng-hide {
      height0;
    }
  </style>
  <script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js"></script>
  <script src="https://cdn.staticfile.org/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>

运行结果

点击收起

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

CSS 动画

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

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <style>
    @keyframes myChange {
      from {
        height100px;
      }

      to {
        height0;
      }
    }

    div {
      height100px;
      background-colorlightblue;
    }

    div.ng-hide {
      animation0.5s myChange;
    }
  </style>
  <script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js"></script>
  <script src="https://cdn.staticfile.org/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>

运行结果

点击收起

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

明天再研究一下更多的动画实验内容



返回列表 返回列表
评论

    分享到