CSS3的动画在PC网页上或者APP上用得越来越多,比如H5页面的应用,目前在营销传播上的意义比较大,还有企业官网或者APP主要介绍也用得比较多,当然还有很多地方都用到.所以学习css的动画也迫在眉睫.那我们就进入主题!

animation 属性在CSS中可以使用其他的css属性,来实现动画,例如color,background-color,height或者width.每一个动画需要定义@keyframes 动画名,作为animation的属性值,例如:

 
.element {
 animation: pulse 5s infinite;
}
@keyframes pulse {
 0% {
   background-color: #001F3F;
 }
 100% {
   background-color: #FF4136;
 } }

我们来实现下面这个动作:

HTML结构:

 
[html] view plaincopy

 
  1. <div class="element"></div>

CSS代码:

 
[css] view plaincopy

 
  1. .element {
  2. width: 100%;
  3. height: 100%;
  4. animation: pulse 5s infinite;
  5. }
  6. @keyframes pulse {
  7. 0% {
  8. background-color: #001F3F;
  9. }
  10. 100% {
  11. background-color: #FF4136;
  12. }
  13. }

每一个 @keyframes 属性规则的定义,都会在指定的时间内发生动作.例如,动作从0%开始,到100%结束.keyframes 可以用简写方式,animation属性来控制,或者其他八个子属性,控制keyframes如何运作..

子属性

  • animation-name: 申明动画@keyframes的名称.

  • animation-duration: 动画在多久内完成一个周期.

  • animation-timing-function: 设置预加速度曲线动画,例如 ease 或者linear.

  • animation-delay: 动画延迟执行的时间.

  • animation-direction: 设定动画执行完成后的方向.默认是起始开始执行.

  • animation-iteration-count: 动画执行的次数.

  • animation-fill-mode:设定动画是执行之前还是之后.
    例如,你可以设置动画保持在最后的状态,或者也可以切换回动画开始的状态.

  • animation-play-state: 开始或者暂停动画

这些属性可以这样使用:

 
@keyframes stretch {
 /* declare animation actions here */
}
.element {
 animation-name: stretch;
 animation-duration: 1.5s;
 animation-timing-function: ease-out;
 animation-delay: 0;
 animation-direction: alternate;
 animation-iteration-count: infinite;
 animation-fill-mode: none;
 animation-play-state: running;
}
/*
 is the same as:
*/
.element {
 animation:
   stretch
   1.5s
   ease-out
   0
   alternate
   infinite
   none
   running; }

我们来看下这个动画:


HTML结构:

 
[html] view plaincopy

 
  1. <div class="element"></div>

CSS代码:

 
[css] view plaincopy

 
  1. .element {
  2. height: 250px;
  3. width: 250px;
  4. margin: 0 auto;
  5. background-color: red;
  6. animation-name: stretch;
  7. animation-duration: 1.5s;
  8. animation-timing-function: ease-out;
  9. animation-delay: 0;
  10. animation-direction: alternate;
  11. animation-iteration-count: infinite;
  12. animation-fill-mode: none;
  13. animation-play-state: running;
  14. }
  15. @keyframes stretch {
  16. 0% {
  17. transform: scale(.3);
  18. background-color: red;
  19. border-radius: 100%;
  20. }
  21. 50% {
  22. background-color: orange;
  23. }
  24. 100% {
  25. transform: scale(1.5);
  26. background-color: yellow;
  27. }
  28. }
  29. body,
  30. html {
  31. height: 100%;
  32. }
  33. body {
  34. display: flex;
  35. align-items: center;
  36. justify-content: center;
  37. }

下面是子属性可以使用的所有值列表:

animation-timing-function ease, ease-out, ease-in, ease-in-out, linear, cubic-bezier(x1, y1, x2, y2) (例如. cubic-bezier(0.5, 0.2, 0.3, 1.0))
animation-duration Xs 或者 Xms
animation-delay Xs 或者 Xms
animation-iteration-count X
animation-fill-mode forwards, backwards, both, none
animation-direction normal, alternate
animation-play-state paused, running, running

合并写法

如果动画有着同样的开始和结束属性,可以用逗号分隔0%和100%:

 
@keyframes pulse {
 0%, 100% {
   background-color: yellow;
 }
 50% {
   background-color: red;
 } }

多个动画

一个选择器可以同时申明多个动画,它们之间用逗号隔开.下面的例子,使用了两个keyframe,也就是2个动画的效果

 
.element {
 animation:
   pulse 3s ease infinite alternate,
   nudge 5s linear infinite alternate;
}

我们看下下面这个动画


HTML代码结构

 
[html] view plaincopy

 
  1. <div class="element"></div>

CSS代码:

 
[css] view plaincopy

 
  1. .element {
  2. height: 400px;
  3. width: 400px;
  4. background-color: red;
  5. animation:
  6. pulse 3s ease infinite alternate,
  7. nudge 5s linear infinite alternate;
  8. border-radius: 100%;
  9. }
  10. @keyframes pulse {
  11. 0%, 100% {
  12. background-color: red;
  13. }
  14. 50% {
  15. background-color: orange;
  16. }
  17. }
  18. @keyframes nudge {
  19. 0%, 100% {
  20. transform: translate(0, 0);
  21. }
  22. 50% {
  23. transform: translate(150px, 0);
  24. }
  25. 80% {
  26. transform: translate(-150px, 0);
  27. }
  28. }
  29. html, body {
  30. height: 100%;
  31. }
  32. body {
  33. display: flex;
  34. align-items: center;
  35. justify-content: center;
  36. }

性能

多数动画属性都存在着性能问题,因此,我们在使用它们的时候,需要谨慎的去处理.可以,我们也可以和下面的安全性动画一起使用:

  • transform: translate()

  • transform: scale()

  • transform: rotate()

  • opacity

本文属于吴统威的博客,微信公众号:bianchengderen 的原创文章,转载时请注明出处及相应链接:http://www.wutongwei.com/front/infor_showone.tweb?id=151 ,欢迎大家传播与分享.

H5中需要掌握的 ANIMATION 动画效果的更多相关文章

  1. Android中xml设置Animation动画效果详解

    在 Android 中, Animation 动画效果的实现可以通过两种方式进行实现,一种是 tweened animation 渐变动画,另一种是 frame by frame animation ...

  2. android中设置Animation 动画效果

    在 Android 中, Animation 动画效果的实现可以通过两种方式进行实现,一种是 tweened animation 渐变动画,另一种是 frame by frame animation ...

  3. 模仿百度首页“元宵节汤圆”动图,并实现360°不停旋转(CSS3的animation动画效果)

    模仿百度首页“元宵节汤圆”动图,并实现360°不停旋转(CSS3的animation动画效果) 效果图: 切图地址: https://ss1.bdstatic.com/5eN1bjq8AAUYm2zg ...

  4. 使用jQuery 中的显示与隐藏动画效果实现折叠下拉菜单的收缩和展开,在页面的列表中有若干项,列表的每项中有一个二级列表,二级列表默认为隐藏状态。点击列表的项,切换二级列表的显示或隐藏状态

    查看本章节 查看作业目录 需求说明: 使用jQuery 中的显示与隐藏动画效果实现折叠下拉菜单的收缩和展开,在页面的列表中有若干项,列表的每项中有一个二级列表,二级列表默认为隐藏状态.点击列表的项,切 ...

  5. android Animation 动画效果介绍

    Android的animation由四种类型组成 XML中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面转移旋转动 ...

  6. Mono For Android中简单实现按钮的动画效果

    Android中动画的分Tween Animation和Frame Animation,本节主要讲Tween Animation的实现. 一般是通过XML文件来定义动画的,具体如下: 1.在项目res ...

  7. ios animation 动画效果实现

    1.过渡动画 CATransition CATransition *animation = [CATransition animation]; [animation setDuration:1.0]; ...

  8. AngularJS中实现显示或隐藏动画效果的3种方式

    本篇体验在AngularJS中实现在"显示/隐藏"这2种状态切换间添加动画效果. 通过CSS方式实现显示/隐藏动画效果 思路: →npm install angular-anima ...

  9. Android Animation动画效果简介

    AlphaAnimation 淡入淡出动画  <alpha>A fade-in or fade-out animation. Represents an AlphaAnimation. a ...

随机推荐

  1. NGU-学习笔记(1)-动态添加删除图集

    现在 正在做unity的方向 不得不说我选的是UI方向 Unity中很有名的就是NGUI插件了.今天做了个ngui的简单背包系统.非常简陋..初学着 自己mark下 (1)预览 主要就是个 simpl ...

  2. leetcode排列,求第k个排列

    stl 中的下一个排列在写一遍忘了 写个1个多小时,使用递归写的,错误就在我使用一个list保存当前剩下的数,然后利用k/(n-1)!的阶乘就是删除的数字,但进过观察, 比如 list={1,2,3} ...

  3. 在Ant Build文件中使用正则表达式替换文件内容

    这需要在build文件中使用<replaceregexp>标签, 这个标签的使用大概是这个样子的: <replaceregexp file="${src}/build.pr ...

  4. Android中的资源文件

    最近复习Android资源文件的内容,留下点记录以备后用. Android中的资源主要是指存放在应用程序或者Framework相应包下/res中的内容.它们可以被本地化,如果必要的话会被编译成二进制文 ...

  5. linux —— shell 编程(文本处理)

    导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 基本文本处理 流编辑器sed aw ...

  6. xen credit scheduler and policy

    最近在研究xen的vcpu 调度和cpu qos策略,现在默认的scheduler是credit, 对应的代码是sched_credit.c xen支持好几种控制策略,效果最好的当选pin, 灵活性最 ...

  7. 在octopress中gist tab不能正确的插入gist代码

    今天尝试用Octopress的gits tab插件来把gist插入到博客中,但是发现没有插入成功,调用rake generate报如下的错误: Gist replied with 404 for ht ...

  8. Unit Test单元测试时如何模拟HttpContext

    参考文章:http://blog.csdn.net/bclz_vs/article/details/6902638 http://www.cnblogs.com/PurpleTide/archive/ ...

  9. 如何vs升级后10和12都能同时兼容

    如图: 项目2008解决方案sln文件升级2012后,都能同时使用. 升级办法:先复制vs2008版本的解决方案文件.升级2012后,再将文件复制到目录里面即可.注意升级过程中产生的升级文件(Upgr ...

  10. iOS View的Frame和bounds之区别,setbounds使用(深入探究)

    前言: 在ios开发中经常遇到两个词Frame和bounds,本文主要阐述Frame和bound的区别,尤其是bound很绕,较难理解. 一.首先,看一下公认的资料: 先看到下面的代码你肯定就明白了一 ...