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. Web安全系列(二):XSS 攻击进阶(初探 XSS Payload)

    什么是 XSS Payload 上一章我谈到了 XSS 攻击的几种分类以及形成的攻击的原理,并举了一些浅显的例子,接下来,我就阐述什么叫做 XSS Payload 以及从攻击者的角度来初探 XSS 攻 ...

  2. 邮箱大师WPZ协议包

    WIRELESS Z PACKET: i8-version(WZPUnit.getVersion() & 3 | WZPUnit.MAGIC_MASK = 1 & 3 | -48 = ...

  3. 关于C++项目指针对象未被初始化的问题(0xcdcdcd)

    http://blog.csdn.net/devfun/article/details/6900086 昨天我试图将一个封装好的模块加入到正在开发的项目中,这个模块不是单独的类,而且对应的声明和实例. ...

  4. linux下ejabberd框架搭建

    ejabberd为erlang的IM的开源框架,一直想找个时间研究研究: 1.下载Ejabberd安装包 wget http://www.process-one.net/downloads/ejabb ...

  5. shell 获取当前svn代码目录版本号

    在当前svn代码目录下执行以下命令: svn info | grep "Last Changed Rev:" | awk -F ': ' '{print $2}' > svn ...

  6. Android之——卸载应用程序

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47357729 不多说,不废话,直接上代码,大家都懂得 //卸载应用程序 //參数为 ...

  7. python 基础 7.8 json--下

      一. 文件和json 之间的转换 1. json.dump()   #/usr/bin/python #coding=utf-8 #@Time   :2017/11/13 0:12 #@Authe ...

  8. cakephp 基本的环境

    这里是在 window下的环境搭建,我假设php,apache,mysql,的基本环境都ok,如果没有的话,偷个懒,用集成环境吧,我用的wampserver.1:去官网(http://cakephp. ...

  9. 原型模式 private static Map<String,Prototype> map = new HashMap<String,Prototype>();

    public class PrototypeManager { /** * 用来记录原型的编号和原型实例的对应关系 */ private static Map<String,Prototype& ...

  10. 【Android】Android中AlertDialog对话框的使用实例

    package com.ceac.deng; import android.R.string; import android.support.v7.app.ActionBarActivity; imp ...