主页 > 快速排名 > 常见问题 > CSS动画VS. Web动画API

CSS动画VS. Web动画API

POST TIME:2018-12-03 21:26

 

众所周知,JavaScript有一个原生动画API,叫做Web Animations API。在接下来的文章中,我们将简称为WAAPI。

在本文中,我们将从各个方面来比较WAPPI和CSS中的动画。各位看官可自行判断其中哪个更好,哪个有所欠缺。

WAAPI的基础知识

如果你曾经使用jQuery  .animate(),WAAPI的基本语法应该看起来很熟悉。 

var element = document.querySelector('.animate-me');

该animate方法接受两个参数:keyframes和duration。与jQuery差别的是,它不但具有内置在浏览器中的优点,并且性能也更好。

第一个参数,keyframes应该是一个对象数组。每个对象都是我们动画中的一个keyframe。这是一个简单的例子:

var keyframes = [

第二个参数,duration,是我们想要动画持续多久。在上面的例子中是 1000 毫秒。我们来看一个更令人兴奋的例子。

#用WAAPI重新创建animista CSS动画

有一些被称为“模糊的幻灯片”入场动画的东西。看起来很可爱。

以下是CSS中的keyframes:

0% {

WAAPI中的代码相同:

var keyframes = [

我们已经看到将keyframes应用到要动画的任何元素是多么容易:

element.animate(keyframes, 700);

为了简单起见,我只指定了duration。但是,我们可以使用这个第二个参数来传递更多的选项。至少我们也应该指定一个easing。以下是可用选项的完整列表,其中包罗一些示例值:

var options = {

有了这些选项,我们的动画将从头开始,没有任何延迟,循环永远在向前和向后播放。

   点我查看代码以及效果!!!

令人懊恼的是,对于我们熟悉CSS动画的人来说,一些术语与我们习惯的差别。虽然在往正面想,,这可以让我们打字稍微快点!

是easing而不是animation-timing-function

是iterations而不是animation-iteration-count。如果我们希望动画永远重复,是Infinity而不是infinite的。有点混乱,无限不是引用。Infinity是一个JavaScript关键字,而其他值是字符串。

我们使用毫秒而不是秒,对于之前编写过许多JavaScript的人来说,这应该是熟悉的。(你可以在CSS动画中使用毫秒数,但很少有人使用。)

当我第一次尝试iterationStart的时候我遇到了问题。为什么要从指定的迭代开始,而不但仅是减少迭代次数?当你使用十进制数时,此选项非常有用。例如,你可以将其设置为  .5,动画将从中间开始播放。将整段动画分为两段,所以如果你的迭代次数设置为1,而且你的iterationStart设置为  .5,动画将从一半到动画结束播放,然后从动画开头开始,结束于中间! 

值得注意的是,你也可以将迭代次数设置为小于1。例如:

var option = {

这将从中间到最后播放动画。 

endDelay:endDelay如果要将多个动画串在一起,但是希望在一个动画的结尾和任何后续动画的开始之间存在差距。

#Easing

Easing是任何动画中最重要的元素之一。WAAPI为我们提供了两种差别的方式设置easing- 在我们的keyframes阵列或我们的选项对象内。

在CSS中,如果你应用了,animation-timing-function: ease-in-out你可能会假设你的动画的淡入和淡出。实际上,这些easing应用在keayframes之间,而不是整个动画。这可以对动画的感觉进行细粒度的控制。WAAPI还提供这种能力。

var keyframes = [

值得注意的是,在CSS和WAAPI中,你不该该传入最后一帧的easing值,因为这将不起作用。这是很多人犯的错误。

有时候,在整个动画中添加easing效果更为直不雅观。这在CSS中是不成能的,但现在可以在WAAPI中实现。

var options = {

你可以看到这两种easing的区别:

点击我查看代码及效果!!!!!!!Ease vs线性

值得注意的是CSS动画和WAAPI之间的另一个区别:CSS ease的默认值是WAAPI的默认值linear。Ease实际上是ease-in-out的一个版本,是一个非常好的选择。同时,线性是看起来很沉闷 - 一致的速度看起来机械和不自然。它可能当选为默认值,因为它是最中立的选项。然而,在使用WAAPI时,使用缓存时更重要的是使用CSS,以免你的动画看起来很乏味和机械。

性能

WAAPI提供与CSS动画相同的性能改进,尽管这并不料味着平滑的动画是不成制止的。 

我希望这个API的性能优化意味着我们可以逃避使用will-change和完全hack translateZ - 最终可能。但是,至少在目前的浏览器实现中,这些属性在处理jank问题方面仍然是有帮手和须要的。

标签:九江 盐城 东营 乌鲁木齐 林芝



收缩
  • 微信客服
  • 微信二维码
  • 电话咨询

  • 400-1100-266