Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

css动画的steps #7

Open
riskers opened this issue Sep 17, 2015 · 2 comments
Open

css动画的steps #7

riskers opened this issue Sep 17, 2015 · 2 comments
Labels
FE web 前端

Comments

@riskers
Copy link
Owner

riskers commented Sep 17, 2015

animation默认以ease方式过渡,会以在每个关键帧之间插入补间动画,所以动画效果是连贯性的。easelinear等之类的过渡函数都会为其插入补间。但有些效果不需要补间,只需要关键帧之间的跳跃,这时应该使用steps过渡方式。本文后面有案例。

steps用法

简单地说,就是原本一个状态向另一个状态的过渡是平滑的,steps可以实现分布过渡。steps用法 :

steps(n,[start | end])

n是一个自然数,steps函数把动画分成n等份。

  • step-start
    等同于 steps(1,start) ,动画分成 1 步,动画执行时以左侧端点为开始 ;
  • step-end
    等同于 steps(1,end) ,动画分成 1 步,动画执行时以结尾端点为开始 。

没懂对不对?我也没懂,上面是官方的说法。接着往下看吧

辨析steps

可以在demo中查看step的区别:狠狠地戳下去

steps(4,start)steps(1,start) 的最大区别就是每次动画"跳跃"的时候,即从 0% -> 25% 的时候,steps(1) 直接一步到位,瞬间从0%的状态跳到25%的状态,而steps(4)会逐渐走4步,即从 0% -> 25% 要跳 4 步 !

慢慢体会一下,应该就知道steps的作用了吧

案例 - 控制台效果

先戳 demo

这里就是steps(1,start) ,动画又是只有 0%(100%) 、 50% 两个状态,所以直接一步跳跃,直接走完。

你可以改成steps(4),就更能知道steps的作用了

案例 - 人人网首页效果

先看看人人网首页的效果:

再戳demo

一步一步分析:

  • 首先,我们不加动画,就像s1

  • 然后,加animation但是没有steps,像s2那样。这样很奇怪是不是,就是因为没有steps,动画是连贯的,所以我们看到了跑马灯似的效果:

  • 最后,当然是我们的终极效果s3,因为设计师把我们看到的类似 Flash 的动画逐帧导出成一张大图,再加上合适的steps和动画时间,就看到了人人网首页的那般顺滑的动画效果!
    注意,为了保持最后停止的状态,还要加一个 forwards ,这里不是本文重点,就不细说了。

再考考你有没有搞清楚steps:为什么图片是20帧,可是设置成steps(12)呢?

因为steps是设置的每一步动画的跳跃步数,而不是整个动画的跳跃步数。举个例子:

@-webkit-keyframes ani{
   0%{...}
   50%{...}
   100%{...}
}
.xxx:hover{
   -webkit-animation:ani 2s steps(10) ;
}

上面的代码指的是0%50%之间有10个跳跃,50%100%之间有10个跳跃。而不是0%~100%之间有10个跳跃。

呼呼,终于理清了steps的作用。感觉这个过程就是渐进增强的体验,一开始用户只能体验s1,后来有了css3,可以体验美妙的动画了,就像s3。但愿以后我们能够做到让每一个用户都满意。

参考


向我捐助 | 关于我 | 工作机会


@riskers riskers added css and removed css labels Sep 17, 2015
@riskers riskers changed the title animation的steps css动画的steps Sep 17, 2015
@For-me
Copy link

For-me commented Oct 27, 2016

请问下雪碧图每个帧的宽高必须是一致的对吧? @cocody

@riskers riskers added FE web 前端 and removed css labels Dec 17, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
FE web 前端
Projects
None yet
Development

No branches or pull requests

3 participants
@riskers @For-me and others