css3动画基础详解(@keyframes和animation)
我们经常会看到CSS3能制作出很炫酷的动画效果,但是自己却只能做一些简单的。原因是对CSS3动画只知其一,不知其二。最近正好有做动画的项目,于是花时间将css3动画做了一个探究之旅,记录在册。
动画是使元素从一种样式逐渐变化为另外一种效果,CSS3动画的生成,主要依赖@keyframes定义动画,animation执行动画。
@keyframes
通过 @keyframes 规则创建动画。
@keyframes keyframes-name {keyframes-selector {css-styles;}}
keyframes-name帧列表的名称。 名称必须符合 CSS 语法中对标识符的定义。
keyframes-selector动画时长的百分比。合法值:
0-100%
from 等效于 0%
to 等效于 100%
css-styles需要改变的css样式,支持多属性
animation
animation 是一个简写的属性,用于设置6个动画属性:
animation-name:这个就是使用@keyframes定义的动画名称;animation-duration:动画执行的时间,以秒为单位animation-delay:规定动画开始之前的延迟animation-iteration-count:规定动画应该播放的次数,n(次数) | infinite(无限次)animation-direction:规定是否应该轮流反向播放动画animation-timing-function:规定动画的速度曲线
动态效果查看:心跳

@keyframes changeSize {
0% {
transform: scale(0.8);
}
50% {
transform: scale(1.2);
}
100% {
transform: scale(0.8);
}
}
.demo {
animation-name: changeSize;
animation-duration: 2s;
animation-iteration-count:infinite;
}
animation-timing-function
这里说下复杂属性,第一个是animation-timing-function:规定动画速度的曲线
| 值 | 说明 |
|---|---|
| ease | 默认,低速开始,然后加快,结束前变慢 |
| linear | 从头到尾速度相同 |
| ease-in | 以低速度开始,先慢后快 |
| ease-out | 以低速结束,先快后慢 |
| ease-in-out | 以低速开始和结束 |
| cubic-bezier(x1,y1,x2,y2) | 在 cubic-bezier 函数中自己的值。可能的值是从 0 到 1 的数值。 |
cubic-bezier:三次赛贝尔曲线函数,前面的几个预设函数都可以通过它来实现。 通过控制曲线上的四个点(起始点(0,0)、终止点(1,1)以及两个相互分离的中间点)来绘制一条曲线并以曲线的状态来反映动画过程中速度的变化。可以访问 cubic-bezier.com 来设置对应的值。
ease 的效果等同于 cubic-bezier(.25,.01,.25,1)
linear 的效果等同于 cubic-bezier(0,0,1,1)
ease-in 的效果等同于 cubic-bezier(.42,0,1,1)
ease-out 的效果等同于 cubic-bezier(0,0,.58,1)
ease-in-out 的效果等同于 cubic-bezier(.42,0,.58,1)

动态效果查看:球体降落
@keyframes dropdown {
0% {
top: 0px;
}
100% {
top: 420px;
}
}
ul li{
&:first-child{
animation: dropdown 6s ease infinite;
}
&:nth-child(2){
animation: dropdown 6s linear infinite;
}
&:nth-child(3){
animation: dropdown 6s ease-in infinite;
}
&:nth-child(4){
animation: dropdown 6s ease-out infinite;
}
&:nth-child(5){
animation: dropdown 6s ease-in-out infinite;
}
&:last-child{
animation: dropdown 6s cubic-bezier(.08,.6,.67,1.03) infinite;
}
}
animation-direction
animation-direction 定义是否应该轮流反向播放动画,如果动画次数设置为一次,则无效。
| 值 | 说明 |
|---|---|
| normal | 默认,正常播放 |
| reverse | 动画反向播放 |
| alternate | 交替播放, 动画会在奇数次数(1、3、5 等等)正常播放,而在偶数次数(2、4、6 等等)反向播放。 |
| alternate-reverse | 交替播放, 动画会在奇数次数(1、3、5 等等)反向播放,而在偶数次数(2、4、6 等等)正常播放。 |
我们可以把上面的案例每个都加上alternate的参数,再看下效果,是不是更赞了?
动态效果查看:球体升降
ul li{
&:first-child{
animation: dropdown 6s ease infinite alternate;
}
&:nth-child(2){
animation: dropdown 6s linear infinite alternate;
}
&:nth-child(3){
animation: dropdown 6s ease-in infinite alternate;
}
&:nth-child(4){
animation: dropdown 6s ease-out infinite alternate;
}
&:nth-child(5){
animation: dropdown 6s ease-in-out infinite alternate;
}
&:last-child{
animation: dropdown 6s cubic-bezier(.08,.6,.67,1.03) infinite alternate;
}
}
css3动画基础详解(@keyframes和animation)的更多相关文章
- css3动画transition详解2
transition主要包含四个属性值:执行变换的属性:transition-property,变换延续的时间:transition-duration,在延续时间段,变换的速率变化transition ...
- css3动画transition详解
一.transition-property 语法: transition-property : none | all | [ <IDENT> ] [ ',' <IDENT> ] ...
- Android基础夯实--重温动画(五)之属性动画 ObjectAnimator详解
只有一种真正的英雄主义 一.摘要 ObjectAnimator是ValueAnimator的子类,它和ValueAnimator一样,同样具有计算属性值的功能,但对比ValueAnimator,它会更 ...
- CSS3图片翻转动画技术详解
CSS动画非常的有趣:这种技术的美就在于,通过使用很多简单的属性,你能创建出漂亮的消隐效果.其中代表性的一种就是CSS图片翻转效果,能让你看到一张卡片的正反两面上的内容.本文就是要用最简单的方法向大家 ...
- iOS:核心动画的详解介绍:CAAnimation(抽象类)及其子类
核心动画的详解介绍:CAAnimation(抽象类) 1.核心动画基本概念 Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍! 使用它 ...
- Android Animations 视图动画使用详解!!!
转自:http://www.open-open.com/lib/view/open1335777066015.html Android Animations 视图动画使用详解 一.动画类型 Andro ...
- 深入浅出DOM基础——《DOM探索之基础详解篇》学习笔记
来源于:https://github.com/jawil/blog/issues/9 之前通过深入学习DOM的相关知识,看了慕课网DOM探索之基础详解篇这个视频(在最近看第三遍的时候,准备记录一点东西 ...
- Dom探索之基础详解
认识DOM DOM级别 注::DOM 0级标准实际并不存在,只是历史坐标系的一个参照点而已,具体的说,它指IE4.0和Netscape Navigator4.0最初支持的DHTML. 节点类型 注:1 ...
- CSS3属性transform详解之(旋转:rotate,缩放:scale,倾斜:skew,移动:translate)
CSS3属性transform详解之(旋转:rotate,缩放:scale,倾斜:skew,移动:translate) 在CSS3中,可以利用transform功能来实现文字或图像的旋转.缩放.倾 ...
随机推荐
- Kettle 解决数据锁的问题(事务(进程 ID 51)与另一个进程被死锁在 锁 资源上)
1.Kettle做了一个作业, 执行的时候问题发生在步骤2和步骤3之间,也就是步骤2还未完全执行完的时候,步骤3就要更新步骤2插入的数据,造成死锁.(我的理解是既然都分开作业了,那么每个作业都是一个单 ...
- 线性代数与simplex
线性方程组: \(i:1-n\) \(j:1-m\) \({\begin{cases}a_{11}x_1+a_{12}x_2+a_{13}x_3+\cdots+a_{1n}x_n=b_1\\a_{21 ...
- css3 实现 tooltip
/* START TOOLTIP STYLES */ [tooltip] { position: relative; /* opinion 1 */ } /* Applies to all toolt ...
- 4.nginx动静分离
动静分离,就是将css.js.jpg等静态资源和jsp等动态资源分开处理,以此提高服务器响应速度,提高性能. 核心就是区分动态和静态资源 图片转自:https://www.cnblogs.com/xi ...
- final学习
类加载过程 1.装载:查找和导入Class文件 2.链接:其中解析步骤是可以选择的 (a)检查:检查载入的class文件数据的正确性 (b)准备:给类的静态变量分配存储空间 (c)解析:将符号引用转成 ...
- QueryRunner(DBUtils) 结果集实例
转自:http://www.cnblogs.com/myit/p/4272824.html# 单行数据处理:ScalarHandler ArrayHandler MapHandler ...
- MySQL对结果进行排序order by
order by {col_name | expr | position} [ASC | DESC] 查询结果 排序条件的顺序 决定 排序条件 的优先级 如果同一条件下值相等,那么启 ...
- LinuxShell脚本编程基础2-变量与数值运算、父shell和子shell
1.变量和数值运算 Shell脚本的变量不需要声明的 对变量赋值有两种方式, 直接用“=” 或者用键盘输入值 #!/bin/bash name1="Jack" echo $name ...
- 【随笔】nginx下的301跳转,两个域名指向同一个服务器ip
301跳转 页面永久性移走,通常叫做301跳转,也叫301重定向,301转向. 指的是当用户点击一个网址时,通过技术手段,跳转到指定的一个网站. 用以解决两个域名指向同一个服务器ip,当访问m.xxx ...
- 利用rem解决移动端响应适配问题
最近看了<从网易与淘宝的font-size思考前端设计稿与工作流>和github上的<使用Flexible实现手淘H5页面的终端适配> 以前一直用百分比的我,对移动前端的H5页 ...