当前位置:首页 > 日记 > 正文

探索使javascript动画平滑的一些方法

探索使javascript动画平滑的一些方法
为什么基于Javascript的动画与CSS具有相同的转换效果,甚至更快富媒体移动网站的性能和眉目传情Adobe发布类似的本地应用,怎么可能呢

本文通过基于DOM的Javascript动画库的概述,如velocity.js和GSAP,看看它是如何更有效地比jQuery和CSS动画效果。

jQuery

让我们从基础开始:Javascript和jQuery是错误的。javascript动画很快。jQuery减慢了速度,为什么因为尽管jQuery非常强大,但成为一个强大的动画引擎绝不是jQuery的设计目标:

jQuery无法避免颠簸的布局,这是因为它的代码库提供了除动画之外的多种用途。
jQuery的内存消耗常常触发垃圾收集,它允许动画不时地被修复。
jQuery使用setInterval代替requestanimationframe(RAF)保护新技术的影响。
需要注意的是布局是崎岖不平的,也就是说动画的最初部分不流畅。垃圾收集是不光滑的动画时期的主要原因。而不是使用皇家空军,它将导致低帧速率。

实现的例子

避免DOM查询和更新组合,从而导致布局混乱:

无功currenttop,
currentleft;

布局颠簸。
currenttop = element.style.top; / * * /查询
element.style.top = currenttop + 1; / * * /更新

currentleft = element.style.left; / * * /查询
element.style.left = currentleft + 1; / * * /更新

无布局颠簸。
currenttop = element.style.top; / * * /查询
currentleft = element.style.left; / * * /查询

element.style.top = currenttop + 1; / * * /更新
element.style.left = currentleft + 1; / * * /更新
更新后的查询将强制浏览器重新计算页面的计算数据。同时,它将考虑到新的更新效果。这将给动画带来巨大的代价,这仅仅是16毫秒的小间隔运行超时。

同样地,实现英国皇家空军不必是对现有代码库的重大返工。让我们来比较一下英国皇家空军的基地setInterval:

无功startingtop = 0;

setInterval:运行每16毫秒达到60fps(16ms / / / 60 1000ms ~ =)。
setInterval(){()函数(
由于这60秒的滴答声60次,我们将最高属性每1秒1单位的增量划分为…
element.style.top =(startingtop = 1 / 60);
},16);

RequestAnimationFrame:尝试运行60fps /基于浏览器是否处于最优状态。
函数滴答(){
element.style.top =(startingtop = 1 / 60);
}

window.requestanimationframe(√);
英国皇家空军产生最大的可能性,促进动画性能,你可以做一个单一的代码更改。

CSS转换

通过CSS转换逻辑,浏览器本身把动画处理超出了jQuery,并在以下几个方面:(1)有效的DOM交互,内存消耗的优化避免卡顿(颠簸),(2)使用空军发动机原理,(3)硬件加速(被迫提高性能利用动画GPU的能力)。

然而,现实的情况是,这些优化也可以在javascript.gsap直接执行这样做已经有很多years.velocity.js,一个新的动画引擎,不仅使用相同的技术,但也有几个步骤-我们将很快讨论这些。

事实上,Javascript动画可以与CSS竞争,作为我们恢复程序的第一步,第二步是实现比CSS更快的Javascript动画。
现在我们来讨论CSS转换的弱点:

转型强制硬件加速会增加GPU的消耗,这将导致在高负荷情况下运行不畅。这是特别明显,在移动设备上。(在特殊情况下,例如,当数据浏览器的主线程和线程之间的排版,通过瓶颈导致失败)。一些CSS属性,如变换和不透明,不受这些瓶颈的影响。认真总结Adobe这里有这些问题。
过渡在IE10没有用,和桌面网站可用性由于IE8和IE9仍然是广泛使用的问题。
由于转换不由Javascript本地控制(而不是由Javascript触发),浏览器无法学习如何通过控制过渡的Javascript代码同步优化它们。
相反,基于Javascript的动画库可以自动确定合适的硬件开放,它们是所有IE浏览器的固有版本,特别适合批量动画优化。

我的建议是使用本地的CSS变换仅当你制定和实施简单的动画仅移动端。在这样的环境中,转型是一个土生土长的有效的解决方案,使您无需增加额外的Javascript库实现所有动画逻辑在样式表中,这样你的页面臃肿。然而,当你设计复杂UI界面的不同状态或开发应用程序,你应该使用动画库保持动画流和工作流管理方便。交通是一个管理的CSS转换特别优秀的图书馆。

Javascript动画

嗯,Javascript在性能方面可能占上风。但具体的Javascript快多少好先构建一个真正的3D动画的例子是足够快的速度是什么,通常在建筑中你只会看到WebGL使用。构建一个小的多媒体动画就足够了。你通常只看到闪光灯或闪光灯效果吗。建设和建设虚拟世界就足够了,通常你只会看到画布的构建。

为了直接比较领先的动画库,当然,它包括交通(它使用CSS渐变效果),回头看看velocityjs.org速度的文件。

问题仍然存在:Javascript如何在细节上实现其高性能下面是一个基于Javascript动画实现的优化列表。

在整个动画链中间同步DOM堆栈,以最小化布局抖动。
为整个链调用缓存属性的值,以尽量减少DOM查询的发生(这些都是高性能DOM动画的陷阱)。
在同一个调用中,整个同级别元素的单位转换率被缓存(如PX到%、EM等等)。
当更新没有可视可见时,可以跳过更新。

让我们回顾一下以前关于布局和颠簸的知识。velocity.js采用这些最佳实践来缓存动画结束值重新使用它作为后续动画的起始值,从而避免重新查询DOM得到元素的起始值。

$元
将元素向下滑动到视图中。
速度({透明度:1,顶部:50% })
后延迟/ 1000ms滑动元件出的观点。
速度({透明度:0,顶部:50%,{,{延迟:1000 });
在上面的例子中,第二个速度调用知道它应该自动从不透明开始到1和顶部为50%。

浏览器本身最终能够完成许多这些相同的优化,但这将显著降低的方式,开发商可以使动画代码。因此,出于同样的原因,因为jQuery不使用RAF(如上所述),浏览器将不进行优化,甚至给个小机会打破规格或偏离预期的行为。

最后,我们比较了这两种Javascript动画库(Velocity.js和GSAP)。
GSAP是第一部图书馆展示Javascript DOM的令人印象深刻的动画的表现。这是真的,但也存在一些不足之处:

在中高负荷的DOM交互动画,GSAP开销使动画在开始和过程中的失帧。
相反,Velocity.js是超宽松的MIT许可下发布的,GSAP是封闭的源代码,并允许在多类业务的年费。
因为GSAP是一个完整的动画套件,它的大小是速度的三倍。然而,GSAP有如此丰富的功能,它可以成为一个活生生的瑞士军刀。
我建议你使用时,你需要精确的控制时序GSAP(如重绘,暂停/恢复)和运动(如贝塞尔曲线路径)。这些功能在游戏开发和在一些特殊的应用中是至关重要的,但通常不需要使用用户界面的Web应用程序。

velocity.js

引用GSAP丰富的功能并不代表速度本身的特点是重量轻。相反,在7kb只有经过压缩,速度jQuery(美元。动画)不仅复制的所有功能,它还把彩色动画、转换、循环,缓解效果,动画滚动包装。

总之,速度是jQuery、jQuery UI和CSS渐变的最佳组合。

此外,通过使用jQuery($队列)方法,可以方便地使用(jQuery的)方法,使我们能够实现无缝的互操作性。此外,由于速度的语法($)动画()语法是相同的,您不需要更改任何代码页。

让我们快速看一下速度的基本级别,js的速度行为与动画()相同:
$元
延迟(1000)
使用速度的动画元素的 /顶在一段时间2000ms财产。
速度({顶部:50% },2000)
使用一个标准的jQuery方法来将元素淡出,一旦速度完成,动画顶部…
淡出(1000);
在最先进的水平上,你可以创建一个复杂的三维动画滚动场景-几乎只要它使用两行简单的代码:

$元
滚动浏览器这个元素的顶部或在一段时间1000ms ..
速度(滚动)
然后围绕y轴度旋转元素。* 360
。速度({ rotatey:360deg},1000);

相关文章

WPS演示如何制作彩灯效果WPS教程

WPS演示如何制作彩灯效果WPS教程

教程,彩灯,演示,效果,电脑软件,无限循环的图片是一个旋转门效果,一个新颖的想法,旋转门作为头版文章,让他实现无限循环。下面的教程将给你一个详细的介绍实施过程,感兴趣的朋友可以借此机会学习。 简介 首先插入图片,按Ctrl和鼠标点击选择需要插…

Javascript通过事件代理高亮显示表行的方

Javascript通过事件代理高亮显示表行的方

事件代理,高亮显示,方式,电脑软件,Javascript,本文演示了Javascript使用事件代理突出显示表行的方式: 突出显示的行 表{ 背景颜色:浅绿色; } { #第三 背景颜色:黄色; } 在鼠标悬停。 可以通过委托传递参数。 我的网站:andrew.dx.am 只是一个..没有…

PS图象处理软件快速研磨使用计算通

PS图象处理软件快速研磨使用计算通

计算,通道,图象,处理软件,快速,本文主要介绍了PS图象处理软件快速磨削技术应用计算通道。步骤很简单,你喜欢的朋友可以一起看。 熟练运用PS图象处理软件计算快速皮肤磨削技术~摄影师的普通磨削方法,简单实用,粗糙…

PS图象处理软件赎罪和破碎的字体

PS图象处理软件赎罪和破碎的字体

字体,图象,处理软件,电脑软件,PS,使用PS图象处理软件创造赎罪,破解字体、特效、特技和特技,简单粗暴,而且效果适用于许多场合,如专题设计,海报设计,等等,你会感兴趣。 使用PS图象处理软件创造赎罪,破解字体、特效、特技和特技,简单粗暴,而且效果适用…

铅笔工具的使用PS图象处理软件的总

铅笔工具的使用PS图象处理软件的总

工具,图象,处理软件,电脑软件,PS,本教程主要是介绍给你的朋友一个铅笔工具在PS图象处理软件。本教程是一个教程,非常适合初学者学习。推荐朋友一起学习。 在PS图象处理软件,很多人都没有关于铅笔工具和画笔工具很清楚。本教程主要是介绍给你…

如何将Excel为txttxtexcelexcel基

如何将Excel为txttxtexcelexcel基

如何将,基地,电脑软件,txttxtexcelexcel,Excel,在许多情况下,我们不仅保存Excel XLS格式,而且使用多种格式,如转化成TXT记事本或Excel格式,导入TXT格式导入Excel。遇到这种转换的问题真的是很讨厌的,因为太多的表格与Excel格式txt会消失,只留下文…

ps同时将多个文档/放在面板上。

ps同时将多个文档/放在面板上。

文档,放在,多个,时将,板上,接下来,小编将向您介绍PS,将安排多个文档/图片面板上同时。这是比较基础。对于需要帮助的人,你可以过来参考一下,希望能对你有所帮助。 在使用ps图像处理时,我们经常遇到需要同时处理多幅图像,如果切换到处理,就会浪费时…

如何使用PS与街景创造一个硬汉子的

如何使用PS与街景创造一个硬汉子的

硬汉子,街景,如何使用,创造一个,海报,现在教你一个很酷的教程来创建一个硬海报 教程只是一个综合性的想法。实际上,在进行这种合成之前,这些步骤要比教程复杂得多。如果我们抓住每一个细节,踏上这里, 该教程将成为一篇冗长的论文,因此我试图简…

七月人格签名的悲伤人格签名

七月人格签名的悲伤人格签名

人格,悲伤,电脑软件,在七月的夏天,这是一个盛开的季节,但现在它充满了鲜花,淡淡的忧伤,一句悲伤的表达,表达了此时此刻的心情,希望能有你最喜欢的签名,喜欢记得赞美。 1,很明显,这都是谎言,但我还是会被感动的。 2。我不聪明,不偏心,不温柔,但我爱你胜过…

超伤感经典情感人格签名感性人格签

超伤感经典情感人格签名感性人格签

人格,感性,伤感,情感,经典,以下是你所编的悲伤经典超级感性人格签名的全部内容。如果您喜欢小编辑器的建议,请继续关注它。 我不怕你不陪我去看海,我怕你陪别的女人看。 谁能解我心的忧伤,给我一点温柔。 我转过身,看见玻璃窗里的爱情破碎了。 …

PS与膜滤光片结合,去除纹理的艺术效

PS与膜滤光片结合,去除纹理的艺术效

照片,纹理,效果,艺术,电脑软件,本文主要介绍了利用PS + ACR用薄膜滤光片来调整画面艺术效果的纹理的详细解决方案,需要朋友们共同设计。 我不擅长说话。我只是把我的一点的掌握,只是为了与你分享。主要使用的是外星人的皮肤exposure4滤波器,…

烟花画一个美丽的三维纹理球课程

烟花画一个美丽的三维纹理球课程

纹理,画一,烟花,课程,美丽,本教程主要使用焰火绘制三维纹理方法。本教程非常详细,也是非常基础的。 本教程主要使用烟花制作三维纹理球体课程。本教程非常详细,也是非常基础的。 设计素描 uff1a 本教程是非常简单的看去; 拉1个圆圈,以填补巨…