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. 《Linear Algebra and Its Applications》-chaper4-向量空间-子空间、零空间、列空间

    在线性代数中一个非常重要的概念就是向量空间R^n,这一章节将主要讨论向量空间的一系列性质. 一个向量空间是一些向量元素构成的非空集合V,需要满足如下公理: 向量空间V的子空间H需要满足如下三个条件: ...

  2. ios策略模式应用

    策略模式应用大量应用于解决巨型switch-case  if-else..... 具体使用方法 : 策略基类(BaseStrategy)包含一个虚算法,所有子类实现虚算法 容器类含有一个指向策略基类的 ...

  3. nginx安装lua-nginx-module模块

    转载注明地址:http://www.cnblogs.com/dongxiao-yang/p/5312285.html 本文主要采用手动源码安装的方式将lua-nginx模块编译到nginx源码内部 一 ...

  4. Oracle分页查询SQL实现

    首先看SQL 怎么写 select * from ( select a.*,ROWNUM rn from ( 最底层查询语句 ) a where ROWNUM <= #{endCol} ) wh ...

  5. Linux编程---线程

    首先说一下线程的概念.事实上就是运行在进程的上下文环境中的一个运行流.普通进程仅仅有一条运行流,可是线程提供了多种运行的路径并行的局面. 同一时候,线程还分为核心级线程和用户级线程.主要差别在属于核内 ...

  6. cocos2d-x 3.0 final 中文显示

    cocos2d-x 3.0的中文显示非常easy,首先,你须要一个xml文件保存中文,还须要一个能显示中文的TTF文件 <?xml version="1.0" encodin ...

  7. HUNNU--湖师大--11409--Skill

    Skill Yasser is an Egyptian coach; he will be organizing a training camp in Jordan. At the end of ca ...

  8. [Firebase + PWA] Keynote: Progressive Web Apps on Firebase

    Link : Video. 1. Firebase Auth: provides simple login with Github, Google, Facebook, Twittr. Link 2. ...

  9. WCF - 绑定后续之自定义绑定

    自定义信道基类 WCF是一个极具扩展性的通信框架 无论在服务模型层还是信道层 都具有很多扩展点 而信道层的扩展点主要体现在实现自定义信道以增强信道栈处理信息的能力 比如我们可以扩展信道层 实现一个自定 ...

  10. 利用Java API通过路径过滤上传多文件至HDFS

    在本地文件上传至HDFS过程中,很多情况下一个目录包含很多个文件,而我们需要对这些文件进行筛选,选出符合我们要求的文件,上传至HDFS.这时就需要我们用到文件模式. 在项目开始前,我们先掌握文件模式 ...