animation语法

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

timing-function取值

timeing-function: linear / ease / ease-in / ease-out / ease-in-out / cubic-bezier() / steps()

上面steps()不常用到却有时候非常有用,它是帧动画,其他值都是补间动画(线性动画),有时候一些动画效果必须用它才能实现,例如:今日头条,我们一般用其配合背景的变化制作一些有意思的帧动画。

steps()

steps()有两个参数,其中第一个参数是:每个关键帧之间执行次数,取值为正整数,第二个参数是:指定使用每个关键帧的起点或终点,取值为start或end,它有两个简写形式step-start相当于steps(1,start),step-end相当于steps(1,end)。

使用

假如上面是一张200 * 800的图片,我想实现在Hover的时候从A变化到A的逐帧动画,可以用以下方法来实现:

方法一:

.way1:hover{
/*在移上去的瞬间变成B,因为start会忽略开始帧*/
animation: way1 2s steps(3,start);/*ABCDA*/
animation: way1 2s steps(3,end);/*ABCA,因为end会忽略结束帧*/
}
@keyframes way1{
0%{
background-position: 0 0;
}
/*1/3{
background-position: 0 -200px;
}
2/3{
background-position: 0 -400px;
}*/
100%{
background-position: 0 -600px;
/*background-position: 0 100%;*/
}
}

方法二:

.way2:hover{
/*第一句*/animation: way2 2s steps(4,start);/*ABCDA*/
/*第二句*/animation: way2 2s steps(4,end);/*ABCDA*/
/*第三句*/animation: way2 2s steps(4,end) forwards;/*ABCDA*/
}
@keyframes way2{
/*实现一个从A到A的动画,推荐下面这样写,这样就不用纠结用start或end了,但其实用start或end还会有一丁点区别,就是start会立即到下一帧,end则不会*/
0%{
background-position: 0 800px; /*A*/
}
/*25%{
background-position: 0 600px; B
}
50%{
background-position: 0 400px; C
}
75%{
background-position: 0 200px; D
}*/
100%{
background-position: 0 0; /*A*/
}
}
/*下面这种写法和@keyframes way2是一样的*/
@keyframes way3{
0%{
background-position: 0 0; /*A*/
}
/*25%{
background-position: 0 -200px; B
}
50%{
background-position: 0 -400px; C
}
75%{
background-position: 0 -600px; D
}*/
100%{
background-position: 0 -800px; /*A*/
}
}

上面.way2:hover{}中“第二句”的写法会忽略最后的100%,但一个动画执行完还是会默认回到0%,所以我们看到的还是ABCDA。“第三句”的写法比较有意思,end会忽略100%,forwards又会停在最后一帧,这时候听谁的呢?答案:forwards。虽然“第二句”和“第三句”虽然看到的结果没有任何区别,但实际动画最后一次执行的帧却不同,“第二句”会跳过100%,“第三句”则不会,为了证明这一点看一个颜色变化例子就明白了。

颜色变化例子

.test:hover{
animation: colorChange 2s step-end;/*红绿*/
animation: colorChange 2s step-end forwards;/*红绿蓝*/
}
@keyframes colorChange{
0%{
background: red;
}
50%{
background: green;
}
100%{
background: blue;
}
}

利用steps()配合设计还可以作出好多有意思小东西,有兴趣可以去发掘。今日头条H5下载倒计时

以上对steps()的分析都是从经验/测试/自己理解中得出的,非原理上的,所以可能出现不准确,发现望指正,谢谢!

.shan {
position: absolute;
top: 0;
left: 0;
overflow: hidden;
width: 235px;
height: 235px;
background-image: url(aaa.png);
background-repeat: no-repeat;
transform: translateZ(0);
animation: change .5s steps(2,end) infinite;
}
@keyframes change{
0%{
background-position:0 0;
}
100%{
background-position:-470px 0;
}
}

使用rem不能精确到数字时,可以用关键字来定位

.box{
height: 4.693333rem;
background: url(./aaa.png) no-repeat left top;
background-size: 10rem auto;
animation: change 1.2s step-start infinite;
}
@keyframes change{
50%{
background-position: left bottom;
}
}

timing-function: steps()的更多相关文章

  1. 【译】css动画里的steps()用法详解

    原文地址:http://designmodo.com/steps-c... 原文作者:Joni Trythall 我想你在css 动画里使用steps()会和我一样有很多困惑.一开始我不清楚怎样使用它 ...

  2. 利用CSS3 中steps()制用动画

    .monster { width: 190px; height: 240px; margin: 2% auto; background: url('http://treehouse-code-samp ...

  3. 浅谈CSS3动画的凌波微步--steps()

    背景 一日敲代码的我,得到一个需求:写一个10秒的倒计时. 用JavaScript定时器麻溜写完之后,恰好同事勇司机接完水.瞟了一眼,然后凑过来说,这个用CSS3也可以写,而且一行JavaScript ...

  4. AWS Step Function Serverless Applications

    Installing VS Components To follow along with this article, you must have an AWS account and install ...

  5. css3 animation 中的 steps

    steps Specifies a stepping function, described above, taking two parameters. The first parameter spe ...

  6. CSS 3学习——transition 过渡

    以下内容根据官方规范翻译以及自己的理解整理. 1.介绍 这篇文档介绍能够实现隐式过渡的CSS新特性.文档中介绍的CSS新特性描述了CSS属性的值如何在给定的时间内平滑地从一个值变为另一个值. 2.过渡 ...

  7. css3 animation 属性众妙

    转自:凹凸实验室(https://aotu.io/notes/2016/11/28/css3-animation-properties/) 本文不会详细介绍每个 css3 animation 属性(需 ...

  8. transition和animation动画简介

    本文介绍CSS动画的两大组成部分:transition和animation.我不打算给出每一条属性的详尽介绍,那样可以写一本书.这篇文章只是一个简介,帮助初学者了解全貌,同时又是一个快速指南,当你想不 ...

  9. css小细节罗列

    有空时候把一些常见可能不是每个人都知道的css小细节总结了下,共勉. 1.line-height 众多周知,line-height是行高的意思,我们时常会使用类似line-height:24px;这样 ...

  10. 02-移动端开发教程-CSS3新特性(中)

    1. 新的背景 背景在CSS3中也得到很大程度的增强,比如背景图片尺寸.背景裁切区域.背景定位参照点.多重背景等. 1.1 background-size设置背景图片的尺寸 cover会自动调整缩放比 ...

随机推荐

  1. 【原创】基于.NET的轻量级高性能 ORM - TZM.XFramework

    [前言] 接上一篇<[原创]打造基于Dapper的数据访问层>,Dapper在应付多表自由关联.分组查询.匿名查询等应用场景时不免显得吃力,经常要手写SQL语句(或者用工具生成SQL配置文 ...

  2. TextView上的文字逐渐变淡直到消失

    给TextView加个动画效果,完了在个动画加个监听,里面有个动画执行完调用的方法在方法里面把TextView设置为gone,我觉得你直接加这个动画效果之后他就会不显示了,其实他还在那占有位置呢.想不 ...

  3. MVC中的ViewData、ViewBag和TempData

    一.ViewBag和ViewData的定义 public dynamic ViewBag { get; } public ViewDataDictionary ViewData { get; set; ...

  4. Linux系统运维之路

    九月份开始,半年内搞定运维,博客会慢慢的更新,vim编辑器,Nginx配置文件优化 运维基础 运维基础-Linux发展史.安装.基本操作 运维基础-用户和组管理 运维基础-文件权限管理 运维基础-进程 ...

  5. 10个经典Java面试题

    1.Java的HashMap是怎样工作的? HashMap是一个针对数据结构的键值.每一个键都会有对应的值.关键是识别这种值. HashMap 基于 hashing 原理,我们通过 put ()和 g ...

  6. OpenCV2马拉松第15圈——边缘检測(Laplace算子,LOG算子)

    收入囊中 拉普拉斯算子 LOG算子(高斯拉普拉斯算子) OpenCV Laplacian函数 构建自己的拉普拉斯算子 利用拉普拉斯算子进行图像的锐化 葵花宝典 在OpenCV2马拉松第14圈--边缘检 ...

  7. TOML简介 (转)

    TOML的由来 配置文件的使用由来已久,从.ini.XML.JSON.YAML再到TOML,语言的表达能力越来越强,同时书写便捷性也在不断提升. TOML是前GitHub CEO, Tom Prest ...

  8. 01 http协议概念及工作流程

    一:HTTP协议 重要性: 无论是以后用webserverice ,还是用rest做大型架构,都离不开对HTTP协议的认识. 甚至可以简化的说: webservice = http协议+XML Res ...

  9. 【Scala】Scala的Predef对象

    隐式引用(Implicit Import) Scala会自己主动为每一个程序加上几个隐式引用,就像Java程序会自己主动加上java.lang包一样. Scala中.下面三个包的内容会隐式引用到每一个 ...

  10. ubuntu 中文显示乱码问题 (转)

    添加中文字符编码: $sudo vim /var/lib/locales/supported.d/local #添加下面的中文字符集 zh_CN.GBK GBK zh_CN.GB2312 GB2312 ...