AngularJS用于在网络上构建丰富的数据绑定应用程序。 将动画添加到这些应用程序中,就像拥有自己喜欢的披萨配浇头一样。 动画不仅可以增加UI的美感,还可以使用户更加友好。 应用中的小动画可能会将其丰富程度提升到其他情况下很难实现的水平。

如今,借助网络的强大功能,有多种创建动画的方法。 直到最近,动画只能通过JavaScript进行。 但是,既然我们的CSS3受到所有主要浏览器的良好支持,我们就可以仅使用CSS对网站进行动画处理。

AngularJS 1.1.5 beta版中支持动画 。 在AngularJS 1.2中发布了该功能的稳定版本之前,它进行了许多更改。 可以很容易地添加或删除Angular应用程序中的动画支持。 该库为基于CSS和基于JavaScript的动画提供了很好的支持。 尽管可以用JavaScript编写动画,但建议使用CSS动画。 这是因为浏览器对CSS动画的处理优先级较低,并且当线程执行某些重要操作时,它们不会阻塞处理线程。

在本文中,我们将看到如何使用CSS动画使AngularJS内置指令的行为具有吸引力。 遍历CSS支持的动画功能不在本文讨论范围之内。 您可以参考SitePoint上的CSS频道以了解更多信息。

入门

要使用动画,我们需要包括angular-animate.js库,并将ngAnimate模块作为依赖项添加到模块中,如下所示。

angular.module('coursesApp', ['ngAnimate']);

该库在指定事件的以下指令中添加了动画支持:

指令 大事记
ng-view
ng-include
ng-开关
ng-if
输入
离开
ng-repeat 输入
离开
移动
ng-show
ng-hide
ng级

去掉

指令状态发生任何更改时,将自动生成这些事件。 要记住的重要一点是,仅当将ngAnimate模块作为依赖项传递到应用程序模块中时,才会生成这些事件。 触发这些事件后,它们会在应用的元素上添加CSS类。 上表中提到了CSS类的对应名称。 如您所见,在事件发生时以及事件发生后,我们都可以自由定义行为。

动画ng-view

当用户从一个视图导航到另一个视图时,路由将在客户端解析,并且页面的一部分会加载新内容。 这真的发生得很快,有时用户可能会觉得视图中的更改过于自然。 此步骤中的动画将使过渡更加平滑。

参考上表,我们看到ng-view在视图改变时引发两个事件。 更改视图时,请应用以下样式。

.view-slide-in.ng-enter {transition: all 1s ease;-webkit-transition:all 1s ease;-moz-transition: all 1s ease;-o-transition: all 1s ease;opacity:0.5;position:relative;opacity:0;top:10px;left:20px;
}

上面的CSS在所应用的元素上应用了缓动过渡,过渡的持续时间为1秒。 但是,仅上面的样式没有任何作用,因为我们没有说在过渡期间要更改元素的哪个属性。 让我们操作一些CSS属性的值:

.view-slide-in.ng-enter {opacity: 0;
}
.view-slide-in.ng-enter.ng-enter-active {top:0;left:0;opacity: 1;
}
.view-slide-in.ng-leave.ng-leave-active{top:5px;left:5px;opacity:1;
}
.view-slide-in.ng-leave{top:0;left:0;opacity:0;
}

现在我们要做的就是在ng-view指令上应用view-fade类。

<div ng-view class="view-slide-in"> </div>

现在,当您从一个视图导航到另一个视图时,将能够看到幻灯片效果。 您可以应用任何过渡 ,甚至可以定义自己的关键帧动画。 您可以在演示中使用视图过渡来获得更好的主意。

动画ng-repeat

在AngularJS应用程序中避免ng-repeat几乎是不可能的。 我们最终使用了指令的大多数功能,例如更新模型,向集合中添加项目或从集合中删除项目,对项目应用排序和过滤。 当我们执行这些操作时,指令中的项目会不断变化。

让我们对元素的不透明度应用线性过渡,以查看项的变化。

.repeat-animation.ng-enter,
.repeat-animation.ng-leave,
.repeat-animation.ng-move {-webkit-transition: all linear 1s;-moz-transition: all linear 1s;-o-transition: all linear 1s;transition: all linear 1s;position:relative;left:5px;
}
.repeat-animation.ng-enter {opacity: 0;
}
.repeat-animation.ng-enter.ng-enter-active {opacity: 1;
}
.repeat-animation.ng-leave {opacity: 1;
}
.repeat-animation.ng-leave.ng-leave-active {opacity: 0;
}
.repeat-animation.ng-move {left:2px;opacity: 0.5;
}
.repeat-animation.ng-move.ng-move-active {left:0;opacity: 1;
}

现在,当在列表上执行任何操作时,我们将看到淡入和对项目的轻微抖动效果的混合。 该效果是由于更改了上面创建的ng-move类中的项目的left position属性的值而引起的。 将任何随机过滤和排序应用于演示中的项目列表,并观察元素的行为。

动画ng-hide

ng-hide进行动画处理类似于对ng-view进行动画处理。 唯一的区别是,我们需要应用ng-addng-remove类,而不是ng-enterng-leave 。 让我们在ng-hide指令显示或ng-hide项目时使它们淡入或淡出。 通过反转事件,可以将相同的动画应用于ng-show

.hide-fade.ng-hide-add, .hide-fade.ng-hide-remove {-webkit-transition:all linear 1s;-moz-transition:all linear 1s;-o-transition:all linear 1s;transition:all linear 1s;display:block!important;
}
.hide-fade.ng-hide-add.ng-hide-add-active,
.hide-fade.ng-hide-remove {opacity:0;
}
.hide-fade.ng-hide-add,
.hide-fade.ng-hide-remove.ng-hide-remove-active {opacity:1;
}

在演示中观看此动画。 第一页右侧的复选框隐藏或显示了转发器中的某些项目。

结论

随着网络浏览器功能的每天都在增长,我们的客户希望我们使用这些功能的全部功能,并向他们提供出色的产品。 CSS中的动画支持是一项需求功能。 与CSS相比,编写和使用动画要容易得多,而不是编写几行JavaScript代码来完成相同的事情。 我希望您发现本教程对您有所帮助,并希望听到您的反馈。

From: https://www.sitepoint.com/adding-css-animations-angularjs-applications/

向AngularJS应用程序添加CSS动画相关推荐

  1. 每次点击添加css动画,div点击添加css动画

    div点击添加css动画 }#big_div{width:100%;height:100%;background-color:#00FF00; }.small_div{width:100%;heigh ...

  2. [京东实践干货]手把手教你实现「京喜工厂」的CSS动画效果

    0 契机与背景 今年Q1(2020年第一季度)参与了京喜事业部「京喜工厂」业务的前端开发.用户可以通过「京喜工厂」参与口罩.抽纸.大米等商品的"在线生产",既能趣味造物,又能免费领 ...

  3. 如何让CSS动画中途停止并维持姿态

    如何让CSS动画中途暂停在某一状态 文章目录 如何让CSS动画中途暂停在某一状态 前言 一.仅用CSS 二.仅用JS 总结 前言 我曾经遇到过一个难题. 我需要让一个摆动的房子从塔吊上落下,但点击落下 ...

  4. html怎样使动画循环,html – 如何在css动画循环之间添加延迟

    参见英文答案 > CSS animation delay in repeating                                    7个 我正在旋转圆形< div&g ...

  5. html怎么添加积分系统,CSS动画实现领积分效果的思路详解

    最近项目中要做一个领积分的效果,根据老板的描述,这个效果类似于支付宝蚂蚁森林里的领取能量.整体效果是就是在树周围飘着几个积分元素,上下滑动,类似星星闪烁,点击领取后,沿着树中心的位置滑动并消失,树上的 ...

  6. CSS 动画相关属性动态实例大全(82种),2023年祝福第二弹(送你一只守护兔)(下),守护兔源代码免费下载

    2023年春节祝福第二弹--送你一只守护兔(下) CSS 动画相关属性动态实例大全(82种).守护兔源代码免费下载 本文目录: 五.CSS3 动画相关属性实例大全 (1).CSS3的动画基本属性 (2 ...

  7. 肝了两宿才收集的17个超炫酷的 CSS 动画加载与进度条特效,绝对值得收藏!!!

    文章目录 一.圆形加载动画 二.上下跳动的圆球加载动画 三.3D立体加载动画 四.饼图加载动画 五.多色圆点波动效果的加载动画 六.制作顺时针放大的圆圈加载动画 七.制作小圆圈轮流放大的加载动画 八. ...

  8. html如何自定义一个动画效果,30个纯css动画代码片段和效果演示

    开源代码已经迎来了一个新的web前端时代.初学者和专家都可以通过使用预构建的代码片段节省时间和压力.下面画廊由30个不同的片段与纯CSS创建动画效果. 所有这些代码片段都放在云IDE平台.这些weba ...

  9. CSS动画中的贝塞尔曲线

    前言 最近在学习CSS动画,其中动画时间函数的部分涉及到了贝塞尔曲线的相关知识.对于这部分知识,之前一直没有好好学习过,正好借着这个机会学习下. 1. 贝塞尔曲线 首先简单介绍下贝塞尔曲线. 贝塞尔曲 ...

最新文章

  1. visual studio 工具箱(选项卡、无控件、灰图标)
  2. python黑客代码_[翻译]Python开发中的密码散列(Hashing)
  3. glibc手动升级高版本导致系统(RedHat/Centos)异常(无法开机等)的解决方法(回退低版本glibc)
  4. C++ 与 G++的区别
  5. 有微型计算机广告,广告还会受欢迎?都是斯巴达克显卡惹的“祸”
  6. 掌握AI核心技术没有秘籍,能自己创造就是王道
  7. 浅入深出被人看扁的逻辑回归!
  8. 图灵2008年12月出版的计算机图书
  9. HTCondor运行Java文件
  10. 区块链技术的发展现状_区块链的现状及其发展趋势
  11. Blockchair首席开发者质疑闪电网络能够扩展比特币:可锁定大部分闪电网络的流动性来破坏闪电网络
  12. C++自学13:位运算(std::bitset)
  13. 程序员高效学习的六原则
  14. 如何用PyTorch训练图像分类器
  15. NOD32 V5 企业版部署方案
  16. SSL证书 和 CA证书 区别
  17. mysql 1114错误_mysql – ERROR 1114(HY000):表’XXX’已满
  18. 【Hive】Hive锁机制分析及任务问题处理
  19. Java Geometry空间几何数据的处理应用
  20. C++ boost 解析 Json

热门文章

  1. 字体颜色编码 html
  2. tfidf 文本抽取
  3. Android应用调用微信登录接口
  4. torch.FloatTensor()
  5. 营收、净利润均超市场预期,但京东的未来仍存在四大隐忧
  6. SIM卡的构成及功能
  7. 链表的理解——造孽的儿子、操碎心的老妈和人狠话不多的老爸
  8. 【项目小结】GEC模型中的难点:分词(Tokenizer)与回译(Backtranslation)
  9. 合同范本300例(二)(建议收藏以后有用的上的时候)(持续更新中)
  10. C语言 十进制转 二进制 八进制 十六进制