浏览器经典动画和新动画函数requestAnimationFrame

作者:小菜 更新时间:2025-03-16 点击数:
简介:前往谷歌浏览器专题 话不多说,首先来个经典的动画函数:function animate(element, name, from, to, time) {tim

【菜科解读】

前往谷歌浏览器专题 话不多说,首先来个经典的动画函数:function animate(element, name, from, to, time) {time = time || 800; //默认0.8秒var style = element.style,latency = 60, // 每60ms一次变化count = time / latency, //变化的次数step = Math.round((to - from) / count), //每一步的变化量now = from;function go() {count--;now = count ? now + step : to;style[name] = now + 'px';if (count) {setTimeout(go, latency);}}style[name] = from + 'px';setTimeout(go, latency);}姑且不论这个函数的设计存在局限性,如只能对以px为单位的样式进行修改。

仅从函数的实现上来看,这可以是一个非常经典的动画理念,其基本逻辑由以下部分组成:获取起点值from和终点值to,通过动画需要进行的时间time,以及每侦间隔latency的要求,计算出值的改变次数count和每次改变的量step。

开启setTimeout(fn, latency);来步进到下一侦。

在下一侦中,设置属性步进一次,如果动画还没结束,再回到第2步继续下一侦。

这个函数工作得很好,服务了千千万万的站点和系统,事实上jQuery的animate函数的核心也无非是setInterval函数。

但是,随着现在系统复杂度的稳步上升,动画效果也越来越多,同时对动画的流畅度也有了更多的重视,这导致上面的函数会出现一些问题。

例如同时打开100个动画效果,根据上面的函数,很明显会有100个定时器在同时运行,这些定时器之间的调度会对性能有轻微的影响。

虽然在正常的环境中,这些许的影响并不会有什么关系,但是在动画这种对流畅度有很高要求的环境下,任何细微的影响都可能产生出不好的用户体验。

在这样的情况下,有一些开发者就发明了一种基于统一帧管理的动画框架,他使用一个定时器触发动画帧,不同的动画来注册这些帧,在每一帧上处理多个动画的属性变化。

这样的好处是减少了定时器调度的开销,但是对于动画框架的开发者来说,统一帧管理、提供监听帧的API等,都是需要开发和维护的。

浏览器的直接支持最终,浏览器厂商们发现这件事其实可以由他们来做,并且基于浏览器层面,还可以有更多的优化,比如:对于一个侦中对DOM的所有操作,只进行一次Layout和Paint。

如果发生动画的元素被隐藏了,那么就不再去Paint。

于是,浏览器开始推出一个API,叫做requestAnimationFrame,关于这个函数,MDC的相关页面有比较详细的介绍,简单来说,这个函数有2种使用方法:调用requestAnimationFrame函数,传递一个callback参数,则在下一个动画帧时,会调用callback。

不传递参数地直接调用该函数,启动动画帧,下一个帧触发时,会同时触发window.onmozbeforepaint事件,可以通过注册该事件来进行动画。

第2种方法由于依赖于Firefox自己的事件,且beforepaint事件还没进入到标准中,所以不推荐使用,还是使用第1种方式比较好。

此时,我们的动画逻辑可以变成这样:记录当前时间startTime,作为动画开始的时间。

请求下一帧,带上回调函数。

下一帧触发时,回调函数的第一个参数为当前的时间,再与startTime进行比较,确定时间间隔ellapseTime。

判断ellapseTime是否已经超过事先设定的动画时间time,如果超过,则结束动画。

计算动画属性变化的差值differ = to - from,再确定在ellapseTime的时候应该变化多少step = differ / time * ellapseTime。

计算出现在应该变化到的位置Math.round(from + step),并重新对样式赋值。

继续请求下一帧。

新的动画函数下面就是一个全新的动画函数:function animate(element, name, from, to, time) {time = time || 800; // 默认0.8秒var style = element.style,startTime = new Date;function go(timestamp) {var progress = timestamp - startTime;if (progress >= duration) {style[name] = to + 'px';return;}var now = (to - from) * (progress / duration);style[name] = now.toFixed() + 'px';requestAnimationFrame(go);}style[name] = from + 'px';requestAnimationFrame(go);}到这一步,还剩一个问题,那就是并不是每个浏览器都支持requestAnimationFrame函数的,所以再做一个简单的修正。

根据Firefox的特性来看,其mozRequestAnimationFrame提供的最高FPS为60,并且会根据每一帧的计算的耗时来进行调整,比如每一帧计算用了1s,那他只会提供1FPS的动画效果。

而Chrome的高版本同样也实现了这个函数,叫webkitRequestAnimationFrame,可以预见未来还会有Opera的oRequestAnimationFrame和IE的msRequestAnimationFrame,所以这里一并做一个简单的兼容处理:requestAnimationFrame = window.requestAnimationFrame ||window.mozRequestAnimationFrame ||window.webkitRequestAnimationFrame ||window.msRequestAnimationFrame || window.oRequestAnimationFrame ||function(callback) { setTimeout(callback, 1000 / 60); }; 浏览器,经典,动画,和,新动画,新,函数,前往,

植树节活动总结幼儿园(经典)

植树节活动总结幼儿园(经典)   总结是把一定阶段内的有关情况分析研究,做出有指导性的经验方法以及结论的书面材料,他能够提升我们的书面表达能力,为此要我们写一份总结。

总结一般是怎么写的呢?以下是小编整理的植树节活动总结幼儿园,仅供参考,欢迎大家阅读。

植树节活动总结幼儿园1  在春日的阳光下,我们幼儿园的小朋友们迎来了植树节。

这次活动,我们旨在培养孩子们的环保意识,让他们了解植树的重要性。

  活动中,孩子们热情高涨,积极参与。

在老师的带领下,他们学习了植树的`知识,知道了树木对环境的贡献。

然后,孩子们亲手挖土、种树、浇水,每一个步骤都充满了欢笑和期待。

  通过这次活动,孩子们不仅体验了植树的乐趣,更重要的是,他们明白了保护环境的责任。

我们相信,这些小小的树苗,将在孩子们的心中生根发芽,成长为对地球家园的深深爱护。

  总的来说,这次植树节活动取得了圆满的成功。

我们期待在未来的日子里,孩子们能像这些树苗一样,茁壮成长,为地球贡献自己的一份力量。

植树节活动总结幼儿园2  在春日的暖阳下,我们幼儿园大班的孩子们迎来了植树节。

此次活动,旨在培养孩子们的环保意识,让他们了解植树的重要性。

  活动中,孩子们热情高涨,积极参与。

在老师们的引导下,他们亲手挖土、种植树苗,为每一棵小树苗浇水,并挂上自己制作的小牌子,写上祝福的话语。

孩子们的脸上洋溢着喜悦和期待,仿佛看到了自己与小树一同成长的‘未来。

  此次植树节活动,不仅让孩子们亲身体验了植树的乐趣,更让他们在行动中深切感受到保护环境的重要性。

植树节活动总结幼儿园3  本月我们幼儿园开展了植树节活动,全园师生共同参与,为校园增添了一片新绿。

活动开始前,老师们向孩子们讲述了植树节的由来和意义,让孩子们明白植树的.重要性。

  活动中,孩子们热情高涨,积极参与。

他们和老师们一起挖坑、培土、浇水,亲手种下了小树苗。

孩子们纷纷表示,会好好照顾小树,让它们茁壮成长。

  此次活动不仅让孩子们亲身体验了植树的乐趣,也让他们懂得了保护环境、爱护大自然的重要性。

看着孩子们认真的脸庞,我们相信,这些小树苗将在他们的关爱下茁壮成长,为地球贡献一片绿色。

  此次植树节活动取得了圆满成功,我们期待未来能有更多的机会,让孩子们在参与中学会珍惜和爱护我们共同的家园——地球。

植树节活动总结幼儿园4  随着春风的吹拂,我们幼儿园迎来了植树节。

此次活动,我们旨在培养孩子们的`环保意识,让他们从小养成爱护大自然的好习惯。

  活动当天,孩子们热情高涨,手持小铲子,认真地在老师的指导下挖坑、种树。

他们虽然年纪小,但做起事来毫不含糊,每一个步骤都做得非常到位。

看到一颗颗小树苗在他们的手中挺立起来,孩子们的脸上都露出了满足的笑容。

  通过这次活动,孩子们不仅学会了如何植树,更重要的是,他们体会到了保护环境的重要性。

植树节活动总结幼儿园5  在春日的暖阳下,我们幼儿园的小朋友们迎来了植树节。

此次活动旨在培养孩子们的环保意识,让他们了解植树的重要性。

  活动开始,老师为孩子们讲述了植树节的由来和意义,随后,孩子们在老师和家长的带领下,亲手挖土、种树、浇水,体验了植树的`乐趣。

孩子们的脸上洋溢着喜悦和期待,他们纷纷表示要为地球妈妈添上一片绿。

  此次活动不仅让孩子们学会了如何植树,更重要的是,让他们认识到植树造林对于保护环境、维护生态平衡的重要性。

我们期待,通过这样的活动,能让孩子们从小养成爱护环境的好习惯,共同为我们的地球家园增添更多的绿色。

植树节活动总结幼儿园6  我们幼儿园大班在植树节这天,举行了一场别开生面的植树活动。

孩子们热情高涨,都迫不及待地想要为地球母亲贡献自己的一份力量。

  活动开始前,老师向孩子们介绍了植树节的由来和意义,让他们明白植树不仅是为了美化环境,更是为了保护地球,维护生态平衡。

接着,孩子们在老师的带领下,亲手种下了小树苗,他们认真挖坑、培土、浇水,每一个步骤都做得有条不紊。

  通过这次活动,孩子们不仅学会了植树的基本方法,更重要的是,他们懂得了珍惜生命,热爱大自然。

看着那一颗颗充满生机的小树苗,孩子们的.脸上都露出了满足的微笑。

植树节活动总结幼儿园7  在春意盎然的植树节,我们幼儿园大班的小朋友们积极参与了植树活动。

此次活动旨在培养孩子们热爱大自然、珍惜绿色生命的‘情感,并让他们亲手体验植树的过程。

  活动中,孩子们热情高涨,纷纷拿起小铲子、小桶等工具,认真地为小树苗培土、浇水。

在老师的指导下,他们不仅学会了正确的植树方法,还了解了树木对环境的重要性。

通过亲手植树,孩子们更加深刻地体会到了保护环境的责任。

  此次植树节活动不仅让孩子们收获了知识,更让他们在实践中培养了热爱劳动、团结协作的品质。

看着一棵棵新栽的小树苗,孩子们脸上洋溢着满足和自豪的笑容。

我们相信,这次活动会在他们幼小的心灵中播下爱护环境、珍惜生命的种子。

植树节活动总结幼儿园8  在春暖花开的三月,我们幼儿园中班的小朋友们迎来了植树节。

此次活动,旨在培养孩子们热爱自然、保护环境的意识。

  活动中,孩子们热情高涨,积极参与。

我们带领孩子们亲手种植小树苗,让他们体验植树的‘乐趣。

孩子们还学习了植树的方法,了解了树木对地球的重要性。

  此次活动不仅让孩子们学会了植树的知识,更让他们体会到了保护环境的责任感。

孩子们纷纷表示,要爱护每一棵树,为地球妈妈贡献自己的一份力量。

植树节活动总结幼儿园9  在春日的阳光下,我们幼儿园中班的孩子们积极参与了植树节活动。

这次活动旨在培养孩子们的环保意识,让他们了解植树的重要性。

  活动中,孩子们亲手种植了小树苗,并为它们浇水、培土。

他们兴奋地观察着每一颗小树苗,期待着它们茁壮成长。

在老师的引导下,孩子们还学习了树木对环境的益处,如净化空气、美化环境等。

  此次活动不仅让孩子们亲身体验了植树的过程,还让他们在实践中增强了环保意识。

孩子们纷纷表示,要爱护树木,保护环境,让我们的.家园更加美好。

  通过这次植树节活动,我们幼儿园中班的孩子们不仅学到了知识,还培养了他们的责任感和爱心。

植树节活动总结幼儿园10  在今年的植树节,我们的幼儿园组织了一次特别有意义的植树活动。

活动当天,孩子们早早地来到幼儿园,满怀期待地准备参与这一绿色行动。

  在老师的指导下,孩子们亲手挖土、种树、浇水,每一个步骤都做得非常认真。

他们一边植树,一边交流着对大自然的热爱和对环保的认识。

整个活动过程中,孩子们都显得非常兴奋和投入,他们的笑脸和汗水成为了这一天最美的风景。

  通过这次活动,孩子们不仅亲身体验了植树的乐趣,更重要的是,他们从中学会了保护环境、珍惜资源的.重要性。

我们相信,这些小小的绿色种子,将在孩子们的心中生根发芽,成为他们未来成长的强大动力。

飞机能飞起来是什么原理_飞机不会掉下来[动画演示]

  古代,人们常常幻想自己可以像鸟儿一样飞起来,如今,坐在飞机上往返于城际之间已经成为了日常,我们在感叹科技发展的同时,不禁好奇:飞机为什么能飞起来?得到的答案会是:因为飞机有机翼,那么,为什么机翼能让飞机飞起来呢?是什么让飞机不会掉下来呢?下面就来说说飞机飞起来的原理并通过动画来做一下演示。

  飞机的定义  如果我问你,什么是飞机?你会给出怎样的答案呢,飞机的定义是:指具有一具或多具发动机的动力装置产生前进的推力或拉力,由机身的固定机翼产生升力,在大气层内飞行的重于空气的航空器,按照其使用的发动机类型又可被分为喷气飞机和螺旋桨飞机。

按此定义,靠旋转翼产生升力的直升机不是飞机。

飞机、直升机还有导弹等能在空中飞的物体叫飞行器。

  飞机为什么能飞起来?  飞机为什么能飞起来呢?飞机飞行与风筝飞行是一个道理,只不过不用你拉着跑了,其向前的动力由发动机提供,它相对于空气的速度越大,角度越大,其竖直方向的分力也越大,也就是升力越大,当然,角度越大,其水平方向的分力也越大,空气阻力也就越大,要达到相同的水平速度,对发动机的功率要求也就越大。

相反,角度越小,其竖直方向的分力越小,升力也越小,要想达到相同的升力,速度要求就越高。

这就需要飞机的角度取值在一个合理的最佳范围内。

  为了使飞机达到足够的速度,需要通过发动机给飞机加速。

而加速的过程是缓慢的,毕竟飞机是一个庞然大物,即便有的发动机一台的推力就可以达到四十、五十吨,但是推动一台几百吨重的飞机往前移动,加速度依旧是很慢,所以需要一段很长的跑道逐渐加速,直到速度达到之后才可以起飞。

  飞机之所以能飞起来,归根结底来自机翼提供的升力,固定翼飞机如此,旋转翼飞机也是一样的道理。

至于升力的产生原理,这个就牵涉到大学里的一门比较难懂的课程《流体力学》中的一个知识——伯努利原理。

  伯努利原理的实质是流体的机械能守恒,或者用公式来表达就是流体的动能、重力势能与压力势能之和为常数。

用这个原理我们可以推论出流体流速非常快时,压强就会变得很小;相反的,流速慢时,压强相对较大。

用这条推论就可以解释为什么飞机机翼会产生升力。

  飞机静止的时候,流过机翼表面的速度为0,此时飞机的升力也为0。

当飞行员启动飞机发动机,飞机开始向前运动,机翼切割空气产生相对气流,此时机翼开始产生升力,并且升力随着飞机滑跑速度的增大而快速增大。

直到某一时刻,飞机的升力等于飞机自身的重力的时候,飞行员拉杆使飞机抬头,飞机便可以上天了。

  当飞机飞行时,机翼在空气中运动,将前方的空气分割成上下两层,上表面气流通道窄,气流速度快,压力变小。

下表面气流通道较宽,气流速度较慢,相对压力较大,于是产生升力。

  所以,飞机只有在飞行的时候,机翼才可以产生升力。

  图解飞机飞起来的原理  大多数飞机由五个主要部分组成:机翼、机身、尾翼、起落装置和动力装置。

  飞机的飞行要解决两个问题:一是上升;二是前进。

前进靠的是发动机的动力带动螺旋桨旋转产生的向前牵引力或是喷气产生的向前推力。

上升是根据伯努利原理,即流体(包括气流和水流)的流速越大,其压强越小;流速越小,其压强越大。

还有,升力和迎角等都有很大关系。

  气流流过的压力差产生了升力#p#分页标题#e#  飞机运动的三轴简化:俯仰、滚转、偏航。

  滚转是副翼控制  俯仰运动靠升降舵控制  偏航运动靠方向舵控制  直升机是如何保持平衡的?  (1)直升飞机的大螺旋桨旋转产生升力平衡重力。

  直升飞机的桨叶大概有2—3米长,一般有5叶组成。

普通飞机是靠翅膀产生升力起飞的,而直升飞机是靠螺旋桨转动,拨动空气产生升力的。

直升飞机起飞时,螺旋桨越转越快,产生的升力也越来越大,当升力比飞机的重量还大时,飞机就起飞了。

在飞行中飞行员调节高度时,就只要通过改变大螺旋桨旋转的速度就可以了。

  (2)直升飞机的横向稳定。

  因为直升飞机如果只有大螺旋桨旋,那么根据动量守衡,机身就也会旋转,因此直升飞机就必须要一个能够阻止机身旋转的装置。

而飞机尾部侧面的小型螺旋桨就是起到这个作用,飞机的左转、右转或保持稳定航向都是靠它来完成的。

同时为了不使尾桨碰到旋翼,就必须把直升飞机的机身加长,所以,直升飞机有一个像蜻蜓式的长尾巴。

  决定飞机升力大小的因素  不难想象,大飞机重量大,要想飞上天,所需升力自然就要比小飞机所需升力大。

飞机升力的大小又跟哪些因素有关系呢?  飞机升力的大小还跟以下几个因素有关:飞机的机翼面积、空气密度、飞行速度以及飞行迎角。

  机翼面积越大,升力越大。

其实,前文在解释升力形成时提到的压力差,本质上是压强差,压强与面积的乘积才是压力的大小。

这样自然机翼面积越大,飞机升力就越大。

  空气密度和飞行速度是决定飞行条件动压的两个条件。

空气密度越大,则空气给予飞机的升力也越大,这很容易理解。

飞行速度越大,那么由伯努利原理给出的压强差就越大,升力也就越大。

  飞行迎角可以理解为飞机机体的方向与气流方向的夹角。

在飞机起飞的过程中,我们能看到飞机抬头,这就是飞机的迎角了。

通常来说,在一定范围内,飞机迎角越大,升力就越大;但是迎角达到一定程度后,升力就会突然下降,这就是飞机的失速。

失速是非常危险的,倘若不及时减小迎角,就会因为失速失去升力而急剧坠落,以致发生飞行事故。

历史上有多次飞机失事都源自失速。

  延伸阅读:  为什么飞机窗户玻璃上有个洞?  为什么飞机窗户是圆的不是方的?  为什么飞机起飞降落要打开遮光板?  天上那么多飞机为什么不会相撞?  为什么飞机飞过后会留下一道白线?

加入收藏
               

浏览器经典动画和新动画函数requestAnimationFrame

点击下载文档

格式为doc格式

  • 账号登录
社交账号登录