CSS animation 与 CSS transition 有何区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSS animation 与 CSS transition 有何区别相关的知识,希望对你有一定的参考价值。

Transition作用是指定了某一个属性(如width、left、transform等)在两个值之间如何过渡,他包括transition-property、transition-duration、transition-timing-function、transition-delay等。
如果某一个元素指定了Transiton,那么当其某个属性改变的时候就会按照Transition指定的方式进行过渡,动画就这么产生了。
Animation也是通过指定某一个属性(如width、left、transform等)在两个值之间如何过渡来实现动画的,与Transition不同的是,Animation可以通过keyframe显式控制当前帧的属性值,而Transition只能隐式来进行(不能指定每帧的属性值),所以相对而言Animation的功能更加灵活。另外一个区别是Animation通过模拟属性值改变来实现动画,动画结束之后元素的属性没有变化;而Transition确实改变了元素的属性值,动画结束之后元素的属性发生了变化;这一点,这在实际应用中会产生很大的区别,也决定了二者各有春秋。
Animation模块包括了animation-name、animation-duration、animation-timing-function、animation-delay、animation-iteration-count、animation-play-state等属性。
其实说这么多,一句话就是:Transform和width、left一样,定义了元素很多静态样式,只不过通过Transition和Animation指定如何改变不同的属性值,才实现了动画。
参考技术A Transition 强调过渡,Transition + Transform = 两个关键帧的Animation
Animation 强调流程与控制,Duration + TransformLib + Control = 多个关键帧的Animation
如果只有两个关键帧会选择Transition + Transform
复杂动画就要考虑把变换写成TranformLib以Class方式调用,Control与Duration写到AppClass
说明:Transform指所有CSS属性变换,TransformLib指所有Animate创建的变换,Control包括动画次数,关键帧与时间的设定等。著名的Animate.css就是把过渡,变换,控制三个分离,构成可以复用动画库。其实是有区别的,至于两种属性有功能重叠的部分就根据喜好来选择啦。

以上是关于CSS animation 与 CSS transition 有何区别的主要内容,如果未能解决你的问题,请参考以下文章

CSS animation 与 CSS transition 有何区别

如何将 ReactCssTransitionGroup 与 animate.css 集成?

如何让 Animate.css 与 Tailwind 的 @responsive 指令一起使用?

CSS animation 与 CSS transition 有何区别

CSS动画总结与呼吸灯效果

CSS3实践之路:CSS3的过渡效果(transition)与动画(animation)