这篇文章,我们将会介绍在 CSS3 中加入的 过渡动画 效果

1、过渡

通过 CSS3,我们可以在不使用 Flash 或 JavaScript 的情况下,使得元素在样式转换时添加过渡效果

(1)属性名称

可以使用 transition-property 规定应用过渡效果的属性名称,当指定的属性改变时,过渡效果开始作用

可选值如下:

  • none:表示没有属性获得过渡效果,默认值
  • all:表示所有属性获得过渡效果
  • 名称列表:指定获得过渡效果的属性,列表以逗号分隔

(2)作用时间

可以使用 transition-duration 规定过渡效果的作用时间,其接受一个时间值,默认为 0

因此在使用过渡效果时,必须要设置 transition-duration 属性,否则将无法看到过渡效果

(3)作用速度

可以使用 transition-timing-function 规定过渡效果的速度曲线,可选值如下:

  • linear:以相同的速度从开始至结束
  • ease:默认值,以慢速开始,然后变快,以慢速结束
  • ease-in:以慢速开始
  • ease-out:以慢速结束
  • ease-in-out:以慢速开始,以慢速结束

(4)延迟时间

可以使用 transition-delay 延迟过渡效果的开始时间,这个属性同样接受一个时间值,默认为 0

(5)简写属性

为了方便,可以仅在 transition 属性中设置所有有关过渡效果的属性

transition: property duration timing-function delay;

一个简单的例子如下:

<!DOCTYPE HTML>
<html>
<head>
<style>
div {
width: 100px;
height: 100px;
background: LightSkyBlue;
}
div:hover {
width: 300px;
}
.withTransition {
width: 100px;
height: 100px;
background: LightSkyBlue;
transition: width 1s ease;
-o-transition: width 1s ease; /* Opera */
-moz-transition: width 1s ease; /* Firefox */
-webkit-transition: width 1s ease; /* Safari and Chrome */
}
/* 当鼠标停留在 div 元素上时,宽度将会变化,从而产生过渡效果 */
</style>
</head>
<body>
<div></div>
<br/>
<div class="withTransition"></div>
</body>
</html>

2、动画

通过 CSS3,我们可以在不使用 Flash 或 JavaScript 的情况下,为网页创建动画

(1)动画名称

可以使用 animation-name 属性规定动画名称,它的可选值有两个:

  • none:无动画,一般用于覆盖来自级联的动画效果

  • 名称:定义动画名称

(2)播放时间

可以使用 animation-duration 规定动画效果的作用时间,其接受一个时间值,默认为 0

因此在使用动画时,必须要设置 animation-duration属性,否则将无法看到动画效果

(3)播放速率

可以使用 animation-timing-function 规定动画效果的速度曲线,可选值如下:

  • linear:以相同的速度从开始至结束
  • ease:默认值,以慢速开始,然后变快,以慢速结束
  • ease-in:以慢速开始
  • ease-out:以慢速结束
  • ease-in-out:以慢速开始,以慢速结束

(4)延迟时间

可以使用 animation-delay 延迟动画效果的开始时间,这个属性同样接受一个时间值,默认为 0

(5)播放次数

可以使用 animation-iteration-count 属性规定动画的播放次数,可选值如下:

  • 数字:表示播放次数,默认为 1
  • infinite:表示无限播放

(6)播放方向

可以使用 animation-direction 属性规定动画的播放方向,可选值如下:

  • normal:默认值,正常播放
  • alternate:轮流反向播放

(7)播放状态

可以使用 animation-play-state 属性规定动画的播放状态,可选值如下:

  • running:默认值,正在播放
  • paused:暂停

(8)间隙可见性

可以使用 animation-fill-mode 属性规定动画在播放之前或之后效果的可见性,可选值如下:

  • none:不改变默认行为
  • forwards:在动画完成之后,保持最后的属性值(在最后一个关键帧中定义)
  • backwards:在动画显示之前,应用开始的属性值(在第一个关键帧中定义)
  • both:在动画显示之前应用开始的属性值,在动画完成之后保持最后的属性值

(9)简写属性

为了方便,可以仅在 animation 属性中设置所有有关动画的属性

animation: name duration timing-function delay iteration-count direction;

(10)@keyframes 规则

动画的原理其实就是将一套 CSS 样式逐渐变换成另一套 CSS 样式

我们可以通过 keyframes 规则,通过百分比定义关键帧的 CSS 样式,从而创建出一个连续播放的动画

另外除了使用百分比,也能使用关键字定义关键帧,关键字分别是 from(对应 0%)和 to(对应 100%

一个简单的例子如下:

<!DOCTYPE HTML>
<html>
<head>
<style>
div {
width: 100px;
height: 100px;
background: LightSkyBlue;
position: relative;
animation: test 2s linear infinite alternate;
-webkit-animation: test 2s linear infinite alternate; /*Safari and Chrome*/
} @keyframes test {
from { left: 0px; }
to { left: 200px; }
} @-webkit-keyframes test { /*Safari and Chrome*/
from { left:0px; }
to { left:200px; }
}
</style>
</head>
<body>
<div></div>
</body>
</html>

【 阅读更多 CSS 系列文章,请看 CSS学习笔记

CSS学习笔记之CSS3新特性的更多相关文章

  1. C++ 学习笔记(一些新特性总结3)

    C++ 学习笔记(一些新特性总结3) public.protected 和 private 继承 public 继承时,基类的存取限制是不变的. class MyClass { public: // ...

  2. HTML学习笔记之HTML5新特性

    目录 1.拖放 2.画布 3.可伸缩矢量图形 4.地理定位 5.Web 存储 6.应用缓存 7.Web Worker 1.拖放 拖放是一种常见的特性,用于抓取对象以后拖到另一个位置,它是 HTML5 ...

  3. Groovy学习笔记-Java 5新特性支持

    1.枚举enum enum CoffeeSize{ SHORT, SMALL, MEDIUM, LARGE, MUG } def orderCoffee(size){ print "Coff ...

  4. 新特性AAtitti css3 新特性attilax总结titti css

    Atitti css3 新特性attilax总结 图片发光效果2 透明渐变效果2 文字描边2 背景拉伸2 CSS3 选择器(Selector)4 @Font-face 特性7 Word-wrap &a ...

  5. css css3新特性

    css  css3新特性 一.css3是什么? 我不喜欢把已有的概念从一个地方抄到另一个地方,还是喜欢如下方式. 参考百度百科: http://baike.baidu.com/link?url=z2V ...

  6. css3新特性学习系列 -- border

    css3新特性 border属性(border-radius.border-image.box-shadow)详解 1.border-radius  圆角 支持:IE9+ 用法: border-rad ...

  7. CSS3新特性(阴影、动画、渐变、变形、伪元素等)

    CSS3与页面布局学习总结(六)--CSS3新特性(阴影.动画.渐变.变形.伪元素等)   目录 一.阴影 1.1.文字阴影 1.2.盒子阴影 二.背景 2.1.背景图像尺寸 2.2.背景图像显示的原 ...

  8. css3新特性总结

    一.什么是css3 css用于控制网页的样式和布局,css3是css的升级版本,受浏览器限制,跨浏览器开发有点复杂.css3完全向后兼容 二.css3新特性 1.边框 css3的边框有如下属性: (1 ...

  9. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

随机推荐

  1. PPAPI插件的全屏切换处理

    有时你会想让PPAPI插件全屏(比方播放视频时),这次来看看怎么做. PPAPI和CEF App两側都要处理. foruok原创,转载请注明出处.欢迎关注foruok的订阅号"程序视界&qu ...

  2. SpringMVC案例2----基于spring2.5的注解实现

    和上一篇一样,首先看一下项目结构和jar包 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmVuamFtaW5fd2h4/font/5a6L5L2T/fo ...

  3. android屏幕适配之精准适配

    (1554068430@qq.com)(android精准适配工具)近期这段时间项目要做适配,在网上方便的方法.后来依据http://blog.csdn.net/jdsjlzx/article/det ...

  4. C++顺序表(模板总结)

    C++顺序表(模板总结) 总结: 1.模板类的实质是什么:让程序员写出和类型无关的代码 2.模板的对象时什么:方法或者类 3.是对类中的一系列操作,提供一个不固定数据类型的方法 用模板做的类的时候要指 ...

  5. ssdb底层实现——ssdb底层是leveldb,leveldb根本上是skiplist(例如为存储多个list items,必然有多个item key,而非暴力string cat),用它来做redis的list和set等,势必在数据结构和算法层面上有诸多不适

    我已经在用ssdb的hash结构,存储了很多数据了,但是我现在的用法正确吗? 我使用hash结构合理吗? 1. ssdb数据库说是类似redis,而且他们都有hash结构,但是他们的命名有点不同,ss ...

  6. B2241 打地鼠 暴力模拟

    大水题!!!30分钟AC(算上思考时间),直接模拟就行,加一个判断约数的剪枝,再多加几个剪枝就可以过(数据巨水) 我也就会做暴力的题了. 题干: Description 打地鼠是这样的一个游戏:地面上 ...

  7. sublime的ctags安装

    首先,是ctags的下载.在这里:http://pan.baidu.com/s/1gdAMFab 我们用sublime几乎都会首先安装这个插件,这个插件是管理插件的功能,先安装它,再安装其他插件就方便 ...

  8. ruby --Paperclip::NotIdentifiedByImageMagickError

    首先,如果遇到这个问题,Paperclip::NotIdentifiedByImageMagickError,先检查下环境变量是否配置了ImagicMagick的路径. cmd下path 查看,首先加 ...

  9. 使用IDEA 搭建一个SpringBoot + Hibernate + Gradle

    ---恢复内容开始--- 打开IDEA创建一个新项目: 第一步: 第二步: 第三步: 最后一步: 如果下载的时候时间太久.可以找到build.gradle文件,添加以下代码.如下图 maven{ ur ...

  10. 快速搭建tab

    1. 布局文件代码: <?xml version="1.0" encoding="utf-8"?> <android.support.v4.a ...