CSS3中的动画包括两种:

  1. Transition(过渡)
  2. Animation(动画)

这两种方法都可以让元素动起来,功能类似,但是稍有区别:

  • Transition只定义某一个元素的开始状态和结束状态
  • Animation除了开始和结束状态之外,还可以定义中间任意时间点关键帧的状态

剩下的内容就是CSS3完成任意两个时间区间内进行补间动画,达到平滑过渡的效果。

Transition

transition的语法为:

transition:transition-property, transition-duration,  transition-timing-function, transition-delay

翻译成中文就是:
transition: 变换属性, 持续时间, 速率变化, 变换延迟
  1. transition-property:指定元素哪些属性改变时进行过渡。当它为all时,所有可过渡的属性变化时都会触发元素过渡效果,当它为none时,停止所有的过渡。
    所谓可过渡属性,是指在动画过程中,能够转化为某些类型的属性,这些类型包括color,length,percentage,number等等。比如某一个元素的margin,height,border-width这三个属性,在动画过程中都是以length的类型进行改变的,它们都是可过渡属性,且动画时的类型为length
    元素属性和过渡类型的对应关系在:http://www.w3.org/TR/css3-transitions/#properties-from-css-
  2. transition-duration:持续时间,可以为秒(s)或者毫秒(ms),默认为0,没有过渡效果
  3. transition-timing-function:过渡时间函数,预设的值有:
      1. ease: 逐渐变慢,等同于贝塞尔曲线(0.25, 0.1, 0.25, 1.0).
      2. linear: 匀速,等同于贝塞尔曲线(0.0, 0.0, 1.0, 1.0).
      3. ease-in: 加速,等同于贝塞尔曲线(0.42, 0, 1.0, 1.0).
      4. ease-out: 减速,等同于贝塞尔曲线(0, 0, 0.58, 1.0).
      5. ease-in-out: 加速然后减速,等同于贝塞尔曲线(0.42, 0, 0.58, 1.0)
      6. cubic-bezier:贝塞尔曲线控制四个点:起始点、终止点和两个相互分离的中间点。在我们这里,起始点为(0,0),终止点为(1.0,1.0),我们可以改变的就是两个锚点,用来控制曲线的弯曲程度。可以在http://cubic-bezier.com 网站上进行演示,右边是标准的几个过渡函数,通过更改url的hash值,可以准确改变贝塞尔函数

          

  4. transition-delay:等待多少时间之后进行转换,默认为0

transition的浏览器兼容性为:

由于浏览器有些不支持标准的W3C写法,因此最好加上各自的前缀,将标准写法放到最后。

p {
-webkit-transition: all .5s ease-in-out 1s;
-o-transition: all .5s ease-in-out 1s;
-moz-transition: all .5s ease-in-out 1s;
transition: all .5s ease-in-out 1s;
}

总之,诸如focus、hover、鼠标点击事件或其他js控制等会改变元素的属性,如果该元素在css中定义了transition,且被改变的属性是可过渡的属性,那么就会触发过渡效果。

Animation

如前所述,animation动画可以在不同的时间段设置关键帧。关键帧可以使用@keyframes进行定义:

 @keyframes IDENT {
from {
Properties:Properties value;
}
Percentage {
Properties:Properties value;
}
to {
Properties:Properties value;
}
} 或者写成百分比:
@keyframes IDENT {
0% {
Properties:Properties value;
}
Percentage {
Properties:Properties value;
}
100% {
Properties:Properties value;
}
}

如定义了一个名字叫做wobble的关键帧:

@-webkit-keyframes 'wobble' {
0% {
margin-left: 100px;
background: green;
}
40% {
margin-left: 150px;
background: orange;
}
60% {
margin-left: 75px;
background: blue;
}
100% {
margin-left: 100px;
background: red;
}
}

该关键帧分别定义了0%,40%,60%和100%这四个点的元素状态,主要改变的是margin-left和背景色这两个属性。

接下来就在animation属性中使用该关键帧,animation涉及到的属性有:

  1. animation-name: 动画名字,可以是我们之前定义的keyframe
  2. animation-duration: 动画播放时长
  3. animation-timing-function: 动画变换速率
  4. animation-delay: 开始动画延时
  5. animation-iteratoration-count: 动画播放循环次数(1还是infinite等)
  6. animation-direction: 播放方向(向前还是向后)

animation属性也可以简写,如下图,不过属性太多,不太好记住顺序,我反正还是用分开写的方式。

一些animation的例子可以看:http://www.justinaguilar.com/animations/

CSS3中的动画的更多相关文章

  1. CSS3中的动画功能(一)

    css3中的动画功能分为transitions功能和animations功能,这两种功能都可以通过改变css属性值来产生动画效果.今天带大家一起来看看css3动画功能中的transitions的用法. ...

  2. css3中的动画功能

    直接用我的一段代码演示下css3中实现动画效果的事例,让一个div自动旋转起来 代码如下: <!doctype html> <html lang="en"> ...

  3. CSS3中的动画效果记录

    今天要记录的是CSS3中的三种属性transform.transition以及animation,这三个属性大大提升了css处理动画的能力. 一.Transform 变形 CSS中transform ...

  4. css3中的动画效果

    css3中的animation属性动画效果代码如下: <!DOCTYPE html> <html lang="en"> <head> <m ...

  5. CSS3中的动画效果-------Day72

    还记得么,在前面也曾实现过"仅仅用css让div动起来",还记得当时是怎么实现的么,是的,transition,针对的也比較局限,仅仅有旋转角度啊,长宽啊之类的,所以说,与其说是动 ...

  6. CSS3中的动画功能(二)

    上一篇文章讲解了css3动画中的一个即transitions,那么今天来说说另外一个animations.和transitions不同的是animations可以定义多个关键帧以及每个关键帧中元素的属 ...

  7. 学习css3中的动画

    css animations 主要有两块构成,那么是哪两块呢? keyframes : 定义了什么阶段展示什么样的动画 animation 属性 :把动画挂载到一个具体的dom上,并且定义如何动起来: ...

  8. 第100天:CSS3中animation动画详解

    CSS3属性中有关于制作动画的三个属性:Transform,Transition,Animation: 一.Animation定义动画 CSS3的Animation是由“keyframes”这个属性来 ...

  9. css3中的动画处理

    动画--过渡属性 div { width: 200px; height: 200px; background: red; margin: 20px auto; /* -webkit-transitio ...

随机推荐

  1. 初窥IM通信协议

    即时通讯(Instant Messenger,简称IM)软件多是基于TCP/IP和UDP进行通讯的,TCP/IP和UDP都是建立在更低层的IP协议上的两种通讯传输协议. 前者是以数据流的形式,将传输数 ...

  2. Windows下设置Ubuntu引导项

    最近在进行一些实验环境的配置,最终通过双系统实现了多系统的管理,而不仅限于虚拟机的方式.以此方式成功安装了Windows8.1 Pro和Windows 10,原文在此. 在此基础上进一步安装了 Ubu ...

  3. Oracle拆分字符串,字符串分割的函数。

    第一种:oracle字符串分割和提取 分割 create or replace function Get_StrArrayLength ( av_str varchar2, --要分割的字符串 av_ ...

  4. hdu 4825 Xor Sum(trie+贪心)

    hdu 4825 Xor Sum(trie+贪心) 刚刚补了前天的CF的D题再做这题感觉轻松了许多.简直一个模子啊...跑树上异或x最大值.贪心地让某位的值与x对应位的值不同即可. #include ...

  5. Yii 集成 PHPExcel读取Excel文件

    PHPexcel官方下载以后,放入Yii的protected\extensions\phpexcel下面 try { spl_autoload_unregister(array('YiiBase', ...

  6. 小技巧:快速清除项目中的svn相关文件!

    习惯使用svn作为源代码管理工具,安全可靠 但是这些.svn字样的文件夹及文件也会随着源代码一同被deploy到Tomcat中,除了看着碍眼,也会占用Tomcat的性能 每次都是在项目部署目录里,搜索 ...

  7. linux nginx 配置php

    linux nginx 配置php   下载php源码 解压 configure ./configure --prefix=/usr/local/php --enable-fpm --with-mcr ...

  8. jsp页面运行的步骤以及原理

    1.jsp页面在服务器端的执行步骤: 1)将jsp页面翻译成java文件 2)编译  java-class 3)执行返回结果(html页面)给客户端. 2.jsp页面运行的原理: jsp在服务器端运行 ...

  9. TeamViewer13个人版使用中提示为商用版导致无法使用

    前言:由于使用teamviewer个人免费版较频繁,被软件识别到不能再继续免费使用,无奈没有多余的资金进行购买正版软件, 通过鼓捣得到如下继续免费使用方案,整理下来以备不时之需,也可以被有同此困惑的朋 ...

  10. 【读书笔记 - Effective Java】01. 考虑用静态工厂方法代替构造器

    获取类的实例有两种方法: 1. 提供一个公有的构造器(最常用). 2. 提供一个公有的静态工厂方法(static factory method). // 静态工厂方法示例 public static ...