我们知道CSS3的Animation有八个属性
- animation-name
- animation-duration
- animation-delay
- animation-iteration-count
- animation-direction
- animation-play-state
- animation-fill-mode
- animation-timing-function
其中1-7大多都有介绍,但是animation-timing-function是控制时间的属性
在取值中除了常用到的 三次贝塞尔曲线 以外,还有个让人比较困惑的 steps() 函数
animation默认以ease方式过渡,它会在每个关键帧之间插入补间动画,所以动画效果是连贯性的
除了ease,linear、cubic-bezier之类的过渡函数都会为其插入补间。但有些效果不需要补间,只需要关键帧之间的跳跃,这时应该使用steps过渡方式
animation-timing-function 规定动画的速度曲线
以上w3school网站上给的使用方法,但是漏掉一个很重要的 steps
简单的来说,我们一直使用animation基本都是实现线性渐变的动画
如
- 位置在固定的时间从起点到终点
- 尺寸在固定的时间线性变化
- 颜色的线性改变等等
看效果 线性动画
截取CSS如下
.test1 { width: 90px; height: 60px; -webkit-animation-name: skyset; -webkit-animation-duration: 2000ms; -webkit-animation-iteration-count: infinite; /*无限循环*/ -webkit-animation-timing-function: linear; } @-webkit-keyframes skyset { 0% { background: red;} 50%{ background: blue} 100% {background: yellow;} }
timing-function:linear 定义的是一个匀速变化的动画,就是在2秒内,从红色过度到蓝色到黄色,是一个很线性的颜色变化
如果要实现帧动画效果而不是线性的变化就需要引入step这个值了,换句话就是没有过渡的效果,而是一帧帧的变化
同样可以看测试 帧动画
理解steps
steps 函数指定了一个阶跃函数
第一个参数指定了时间函数中的间隔数量(必须是正整数)
第二个参数可选,接受 start 和 end 两个值,指定在每个间隔的起点或是终点发生阶跃变化,默认为 end。
step-start等同于steps(1,start),动画分成1步,动画执行时为开始左侧端点的部分为开始;
step-end等同于steps(1,end):动画分成一步,动画执行时以结尾端点为开始,默认值为end。
看看W3C的规范 transition-timing-function
steps第一个参数的错误的理解:
steps(5,start)
steps() 第一个参数 number 为指定的间隔数,即把动画分为 n 步阶段性展示,估计大多数人理解就是keyframes写的变化次数
例如:
@-webkit-keyframes circle { 0% {} 25%{} 50%{} 75%{} 100%{} }
我之前也一直认为steps(5,start)中的5 就是指的keyframes中的0% 25% 50% 75% 100% 分成5个间隔等分
为什么会出现这种理解错误,我们看一个例子
keyframes的关键帧是只有2个规则的时候,假如我们有一张400px长度的雪碧图
@-webkit-keyframes circle { 0% {background-position-x: 0;} 100%{background-position-x: -400px;} }
此刻设置steps(5,start)那么会发现5张图会出现帧动画的效果,因为steps中的5把 0% – 100%的规则,内部分成5个等分
实际内部会执行这样一个关键帧效果
@-webkit-keyframes circle { 0% {background-position-x: 0;} 25% {background-position-x: -100px;} 50% {background-position-x:-200px;} 75%{background-position-x: -300px;} 100%{background-position-x: -400px;} }
将这个规则稍微修改下,加入一个50%的状态
@-webkit-keyframes circle { 0% {background-position-x: 0;} 50% {background-position-x: -200px;} 100%{background-position-x: -400px;} }
那么同样用steps(5,start)效果就会乱套
此刻你会很迷惑,所以关键要理解第一个参数的针对点,首先引入一个核心点:
timing-function 作用于每两个关键帧之间,而不是整个动画
那么第一个参数很好理解了,steps的设置都是针对两个关键帧之间的,而非是整个keyframes,所以第一个参数对 - 次数对应了每次steps的变化
换句话说也是 0-25 之间变化5次, 25-50之间 变化5次 ,50-75 之间变化5次,以此类推
第二个参数可选,接受 start 和 end 两个值,指定在每个间隔的起点或是终点发生阶跃变化,默认为 end
通过案例看下 step-start,step-end 的区别
@-webkit-keyframes circle { 0% {background: red} 50%{background: yellow} 100% {background: blue} }
step-start : 黄色与蓝色相互切换
step-end : 红色与黄色相互切换
2个参数都会选择性的跳过前后部分,start跳过0%,end跳过100%
step-start在变化过程中,都是以下一帧的显示效果来填充间隔动画,所以0% 到 50% 直接就显示了黄色yellow
step-end与上面相反,都是以上一帧的显示效果来填充间隔动画,所以0% 到 50% 直接就显示了红色red
引用w3c的一张step的工作机制图
总结:
steps函数,它可以传入两个参数,第一个是一个大于0的整数,他是将间隔动画等分成指定数目的小间隔动画,然后根据第二个参数来决定显示效果。
第二个参数设置后其实和step-start,step-end同义,在分成的小间隔动画中判断显示效果。可以看出:steps(1, start) 等于step-start,steps(1,end)等于step-end
最核心的一点就是:timing-function 作用于每两个关键帧之间,而不是整个动画
http://designmodo.com/steps-css-animations/
转自:http://www.cnblogs.com/aaronjs/p/4642015.html
相关推荐
首先,我们需要了解CSS3 Animation的基础。这包括定义关键帧(@keyframes)规则,设置动画属性(如duration、delay、iteration-count和direction),以及将动画应用到HTML元素上。例如,创建一个简单的文字淡入淡出...
这篇教程将深入探讨CSS3 Animation的原理、语法以及应用场景,帮助你更好地掌握这一强大技术。 ### 一、基本概念 CSS3 Animation是通过`@keyframes`规则定义动画过程,并结合`animation`属性来应用动画。`@...
CSS3 Animation提供了关键帧(@keyframes)规则,使得我们可以定义动画从开始到结束的状态,并控制动画的速度曲线、延迟时间等参数,以创造出各种各样的动态效果。 这个压缩包内包含7款不同的文字动画特效,每一种...
接下来,我们将深入探讨如何利用CSS3的`animation`属性来制作这样一个3D弹力球动画。 首先,我们需要理解`animation`属性的基本结构。它是一个复合属性,包含了多个相关的子属性,如`animation-name`、`animation-...
在IT行业中,CSS3是 Cascading Style Sheets 的第三版本,它极大地扩展了样式表语言的能力,...通过研究和理解这些代码,开发者可以更深入地了解如何利用CSS3的动画功能为网站或应用程序增添动态效果,提高用户体验。
**CSS3 动画简介** CSS3(Cascading Style Sheets 第三代)是网页样式表语言,它极大地扩展了对网页元素的...通过深入理解@keyframes规则和animation属性,我们可以为网站增添更多互动性和视觉吸引力,提升用户体验。
综上所述,纯CSS3的animation属性结合精心设计的关键帧,可以创造出各种各样的加载动画效果,为用户提供更优的交互体验。通过熟练掌握这些技巧,开发者能够为网站添加生动有趣的动态元素,同时保持高效的性能。在...
CSS3的Animation属性是现代网页设计中的一个重要工具,它使得开发者能够创建复杂的动态效果,如平滑的过渡、动画序列等,而无需依赖JavaScript或者其他外部库。在本案例中,我们将深入探讨如何使用CSS3的animation...
首先,我们需要了解CSS3的animation属性。CSS3的animation属性是一组属性的简写形式,包括`animation-name`、`animation-duration`、`animation-timing-function`、`animation-delay`、`animation-iteration-count`...
例如,`animation-name`用于指定动画的名称,这个名称对应于CSS中定义的关键帧动画;`animation-duration`定义动画的总时长;`animation-timing-function`可以设置动画的速度曲线,如linear(匀速)、ease(默认,慢...
整体来看,《Pro CSS3 Animation》是一本非常适合那些想要深入了解和应用CSS3动画的设计师和开发者的书。书中不仅仅是理论知识的堆砌,更重要的是通过实例和技巧,帮助读者在实际工作中更好地运用CSS3动画。对于那些...
在"CSSAnimation101从零开始介绍CSS动画开源电子书"中,我们将深入探讨这个主题,了解如何使用CSS创建引人入胜的动画效果。 **一、CSS动画基础** 1. **关键帧(Keyframes)**:CSS动画的核心是关键帧,它定义了...
首先,我们要了解CSS3动画的基础概念。`animation`属性是由多个子属性组成的,包括`animation-name`、`animation-duration`、`animation-timing-function`、`animation-delay`、`animation-iteration-count`、`...
**CSS3 动画概述** ...通过深入理解`@keyframes`规则和动画属性,开发者可以轻松地构建出流畅、富有表现力的网页效果。这个名为"CSS3 animator"的资源集合,无疑是一个学习和探索CSS3动画的宝贵资料。
首先,我们需要了解CSS3 Animation的基础知识。CSS3 Animation允许我们在不同时间点定义元素的不同样式,通过关键帧(keyframes)来创建动画。我们可以使用`@keyframes`规则来定义动画的起始和结束状态,以及在动画...
为了实现这些效果,开发者需要对CSS3的`transform`、`transition`、`opacity`、`box-shadow`等属性有深入理解,并灵活运用它们。此外,还要注意性能优化,避免过度渲染导致的性能问题。 在压缩包文件`texiao4424_...
通过解压并查看这些文件,你可以更深入地理解如何实际应用这些CSS3技巧来创建僵尸行走动画。 总之,CSS3 Sprite僵尸行走动画特效展示了CSS3的强大能力,不仅可以优化网页性能,还能创造出丰富的视觉体验。学习并...
首先,让我们深入了解`animation`属性。它是一个简写属性,用于合并以下多个与动画相关的CSS属性: 1. `animation-name`: 定义动画的名称,这是在一个@keyframes规则中定义的动画序列。 2. `animation-duration`: ...
在本文中,我们将深入探讨如何使用CSS3 Animation技术来创建一个引人注目的彩色光点背景动画。这个特效是通过JavaScript配合CSS3实现的,旨在为网页增添动态视觉效果,吸引用户注意力,提升用户体验。 首先,我们要...
首先,让我们了解CSS3 Animation的基础。`@keyframes`规则是定义动画的关键,它定义了动画从开始到结束的各个阶段元素应该具有的样式。例如,创建一个名为`dots-animation`的动画: ```css @keyframes dots-...