学习要点:

1.动画简介

2.属性详解

3.简写和版本

主讲教师:李炎恢

本章主要探讨 HTML5 中 CSS3 的动画效果,可以通过类似 Flash 那样的关键帧模式控制运行。

一.动画简介

CSS3 提供了类似 Flash 关键帧控制的动画效果,通过 animation 属性实现。那么之前的 transition 属性只能通过指定属性的初始状态和结束状态来实现动画效果,有一定的局限性。

animation 实现动画效果主要由两个部分组成:1.通过类似 Flash 动画中的关键帧声明一个动画;2.在 animation 属性中调用关键帧声明的动画。

CSS3 提供的 animation 是一个复合属性,它包含了很多子属性。如下表所示:

属性

说明

animation-name

用来指定一个关键帧动画的名称,这个动画名必须对应一个@keyframes 规则。CSS 加载时会应用 animation-name 指定的动画,从而执行动画。

animation-duration

用来设置动画播放所需的时间

animation-timing-function

用来设置动画的播放方式

animation-delay

用来指定动画的延迟时间

animation-iteration-count

用来指定动画播放的循环次数

animation-direction

用来指定动画的播放方向

animation-play-state

用来控制动画的播放状态

animation-fill-mode

用来设置动画的时间外属性

animation

以上的简写形式

除了这 9 个属性之外,动画效果还有一个重要的属性,就是关键帧属性:@keyframes。它的作用是声明一个动画,然后在 animation 调用关键帧声明的动画。

//基本格式,“name”可自定义

@keyframes name {
/*...*/
}

二.属性详解

在讲解动画属性之前,先创建一个基本的样式。

//一个 div 元素

<div>我是 HTML5</div>

//设置 CSS

div {
width: 200px;
height: 200px;
border: 1px solid green;
}

1.@keyframes

//创建动画的第一步,先声明一个动画关键帧。

@keyframes myani {
0% {
margin-left:0px;
}
50% {
margin-left:100px;
}
100% {
margin-left:0px;
}
}

//或者重复的,可以并列写在一起

@keyframes myani {
0%, 100% {
margin-left:0px;
}
50% {
background-color: black; margin-left:100px;
}
}

2.animation-name

//调用@keyframes 动画

animation-name: myani;

属性值

说明

none

默认值,没有指定任何动画

INDEX

是由@keyframes 指定创建的动画名称

3.animation-duration

//设置动画播放的时间

animation-duration: 1s;

当然,以上通过关键帧的方式,这里插入了三个关键帧。0%设置了白色和左偏移为 0,和初始状态一致,表明从这个地方开始动画。50%设置了黑色,左偏移 100px。而 100%则是最后一个设置,又回到了白色和左偏移为 0。整个动画就一目了然了。

而对于关键帧的用法,大部分用百分比比较容易控制,当然,还有其他一些控制方法。

//从什么状态过渡到什么状态

@keyframes myani {
from {
margin-left:0px;
}
to {
margin-left:100px;
}
}

4.animation-timing-function

//设置缓动

animation-timing-function: ease-in;

5.animation-delay

//设置延迟时间

animation-delay: 1s; 

6.animation-iteration-count

//设置循环次数

animation-iteration-count: infinite; 

属性值

说明

次数

默认值为 1

infinite

表示无限次循环

7.animation-direction

//设置缓动方向交替

animation-direction: alternate;

属性值

说明

normal

默认值,每次播放向前

alternate

一次向前,一次向后,一次向前,一次向后这样交替

8.animation-play-state

//设置停止播放动画

animation-play-state: paused;

9.animation-fill-mode

//设置结束后不在返回

animation-fill-mode: forwards;

属性值

说明

none

默认值,表示按预期进行和结束

forwards

动画结束后继续应用最后关键帧位置,即不返回

backforwards

动画结束后迅速应用起始关键帧位置,即返回

both

根据情况产生 forwards 或 backforwards 的效果

//both 需要结合,次数和播放方向 animation-iteration-count: 4; animation-direction: alternate;

六.简写和版本

//简写形式完整版

animation: myani 1s ease 2 alternate 0s both;

为了兼容旧版本,需要加上相应的浏览器前缀,版本信息如下表:

Opera

Firefox

Chrome

Safari

IE

支持需带前缀

15 ~ 29

5 ~ 15

4 ~ 42

4 ~ 8

支持不带前缀

16+

43+

10.0+

//兼容完整版,Opera 在这个属性上加入 webkit,所以没有

-o--webkit-animation: myani 1s ease 2 alternate 0s both;
-moz-animation: myani 1s ease 2 alternate 0s both;
-ms-animation: myani 1s ease 2 alternate 0s both;
transition: all 1s ease 0s;

//@keyframes 也需要加上前缀

@-webkit-keyframes myani {...}
@-moz-keyframes myani {...}
@-o-keyframes myani {...}
@-ms-keyframes myani {...}
keyframes myani {...}

第 26 章 CSS3 动画效果的更多相关文章

  1. 鼠标悬停css3动画效果

    下载Demo 效果预览 html: <!DOCTYPE html> <html lang="en"> <head> <meta chars ...

  2. 第八十三节,CSS3动画效果

    CSS3动画效果 学习要点: 1.动画简介 2.属性详解 3.简写和版本 本章主要探讨HTML5中CSS3的动画效果,可以通过类 Flash那样的关键帧模式控制运行. 一.动画简介     CSS3提 ...

  3. Bounce.js – 快速创建漂亮的 CSS3 动画效果

    Bounce.js 是一个用于制作漂亮的 CSS3 关键帧动画的 JavaScript 库,使用其特有的方式生成的动画效果.只需添加一个组件,选择预设,然后你就可以得到一个短网址或者导出为 CSS 代 ...

  4. CSS3 动画效果带来的bug

    css3 动画效果比如transition:all 2s linear;这种用来计算及时的物体坐标的话会带来一定的问题 比如把一个DIV从A点移动到B点.JS为DIV.style.left=B; 但是 ...

  5. animate.css 一些常用的CSS3动画效果

    大家已经开始在项目中使用一些CSS3动画效果了吧,这让网站在高端浏览器上看起来很上流.animate.css是一个老外做的各种CSS3动画的合集,比较全,也很炫,大家可以参考学习一下. 项目主页:ht ...

  6. CSS Animatie是一款在线制作CSS3动画的工具,可以在线直接制作CSS3动画效果,生成代码

    CSS Animatie是一款在线制作CSS3动画的工具,可以在线直接制作CSS3动画效果,生成代码 CSS Animatie 彩蛋爆料直击现场 CSS Animatie是一款在线制作CSS3动画的工 ...

  7. CSS3动画效果——js调用css动画属性并回调处理详解

    http://www.jb51.net/css/258407.html 这篇文章主要详细介绍了CSS3动画效果回调处理,需要的朋友可以参考下 我们在做js动画的时候,很多时候都需要做回调处理,如在一个 ...

  8. 35个让人惊讶的CSS3动画效果

    1. Pure CSS Coke Can 2. Colorful Clock 3. jQuery DJ Hero 4. Animated Pricing Column 5. Slick jQuery  ...

  9. Css3动画效果,彩色文字效果,超简单的loveHeart

    <!DOCTYPE html><html><head><meta charset="utf-8" /><title>Cs ...

随机推荐

  1. JS实现无限分页加载——原理图解

    由于网页的执行都是单线程的,在JS执行的过程中,页面会呈现阻塞状态.因此,如果JS处理的数据量过大,过程复杂,可能会造成页面的卡顿.传统的数据展现都以分页的形式,但是分页的效果并不好,需要用户手动点击 ...

  2. Mybatis入门例子

    Mybatis是轻量级的持久化框架,的确上手非常快. Mybatis大体上的思路就是由一个总的config文件配置全局的信息,比如mysql连接信息等.然后再mapper中指定查询的sql,以及参数和 ...

  3. position格式布局

    布局大体分为: 位置--position 绝对坐标 absolute 绝对定位的元素 不受其他位置影响 可通过z-index进行层次分级 body来定位自己 相对坐标 设置  top和left之后 r ...

  4. 我所了解的chrome

    Chrome的隐身模式 先来说说隐身模式的启用方法吧 1.键盘快捷:Ctrl + Shift + N. 2.在Windows7下的任务栏处,右击“Chrome”图标,会出一个下拉菜单,点击“新建隐身窗 ...

  5. mongodb数据类型

    随着web2.0的时代到来,关系型数据库在越来越多的场景下暴漏出许多问题,为了解决这类问题,NoSql数据库应用而生,今天就来说说当下比较主流的NoSql数据库mongodb.   1. 基本数据类型 ...

  6. KnockoutJS 3.X API 第五章 高级应用(4) 自定义处理逻辑

    在典型的Knockout应用程序中,DOM元素是动态添加和删除的,例如使用模板绑定或通过控制流绑定(if,ifnot,with和foreach). 当创建自定义绑定时,通常需要添加清除逻辑,当Knoc ...

  7. 深入理解PHP内核(九)变量及数据类型-静态变量

    原文链接:http://www.orlion.ga/251/ 通常静态变量是静态分配的,他们的生命周期和程序的生命周期一样长,只有在程序退出后才结束生命周期,这和局部变量相反,有的语言中全局变量也是静 ...

  8. Ubuntu-安装-theano+caffe-超详细教程

    一.说明 本文是继<Ubuntu-安装-cuda7.0-单显卡-超详细教程> 之后的续篇.theano和caffe是深度学习库,对运算能力需求很大,最好使用cuda进行加速.所以,请先阅读 ...

  9. 深入理解javascript函数系列第二篇——函数参数

    × 目录 [1]arguments [2]内部属性 [3]函数重载[4]参数传递 前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传 ...

  10. hash算法总结收集

    hash算法的意义在于提供了一种快速存取数据的方法,它用一种算法建立键值与真实值之间的对应关系,(每一个真实值只能有一个键值,但是一个键值可以对应多个真实值),这样可以快速在数组等条件中里面存取数据. ...