很久之前就对jQuery animate的实现非常感兴趣,不过前段时间很忙,直到前几天端午假期才有时间去研究。

jQuery.animate的每种动画过渡效果都是通过easing函数实现的。jQuery1.4.2中就预置了两个这样的函数:
easing: {
linear: function( p, n, firstNum, diff ) {
return firstNum + diff * p;
},
swing: function( p, n, firstNum, diff ) {
return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
}
}
从参数名隐约可以推测出firstNum是初始值。要是你的数学学得比较好,你可以发现linear函数是直线方程;要是你的物理学得比较好,你可以发现它是匀速运动的位移方程(我数学和物理都没学好,是别人提醒我的……)。那么diff和p就是速度和时间了。
再看看jQuery.animate的原型:
animate: function( prop, speed, easing, callback )
各参数的说明如下:
prop:一组包含作为动画属性和终值的样式属性和及其值的集合。
speed:动画时长。
easing:要使用的擦除效果的名称。
callback:动画完成时执行的函数。
元素的当前样式值(firstNum)可以获取,动画时长(p)就是duration,最终样式值是prop。理论上说,动画速度(diff)是可以算出来的。但是这又必然需要另一个函数进行运算。这样做明显是不明智的。再看看调用easing函数的相关代码(位于jQuery.fx.prototype.step中):
var t = now();
...
var n = t - this.startTime;
this.state = n / this.options.duration;
...
this.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);
可以发现,p参数的值也就是this.state的值,从上下文得知它实际上是动画的时间进度。而firstNum和diff的参数值都是写死的,分别是0和1。这下easing函数的秘密完全被解开,p、firstNum、diff都是百分率而非实际数值,easing函数的返回值也就是位移的进度。diff的值是1,也就是以1倍的速度运行动画。算出位移进度后,通过“初始值+(最终值-初始值)×进度”就可以算出当前位移值:
this.now = this.start + ((this.end - this.start) * this.pos);
通过setInterval每隔一定时间(jQuery中是13ms)进行一次位移运算,直到当前时间与初始时间的差值大于动画时长,这就是jQuery.animate的执行过程。
按照常规思路,动画的实现方式是这样的:通过setInterval每隔一定时间给某个值增加特定数值,直到这个值达到限制值。这样做的主要问题是,不同浏览器的运行速度不同,从而导致动画速度有差异,一般是IE下比较慢,Firefox下比较快。而jQuery.animate是以当前时间来决定位移值,某个时刻的位移值总是固定的,因而动画速度不会有差异。
相关推荐:
SEO软优化:助力网站实现流量爆发的秘密武器,延平区网页seo
实用AI工具:提升效率、优化生活的科技利器
SEO招标:如何通过专业SEO服务助力企业脱颖而出,牡丹江关键词排名怎么样
SEO王:掌控搜索引擎优化的至高法则,助力企业飞速腾飞,网站动作优化在哪里下载
Bing搜索的注意事项-提高搜索效率与准确性,轻松获取所需信息,最近ai写作软件推荐
AI生成网页模板,轻松打造专业网站,ai网格画法
SEO好吗?助力网站成功的关键之道,网站优化方案范文怎么写
SEO表述:如何通过精准优化让你的内容脱颖而出,江阴网站建设怎么样啊
优化投入,让企业更具竞争力,怎样推广营销方案
ChatGPT:我目前无法查看或解析附件,您是否遇到过这样的困扰?,ai+燃烧
SEO客服:如何提升客户体验与业务转化的双赢策略,鄂州网站建设公司教程
SEO合作:让你的网站在搜索引擎中脱颖而出,惠州抖音seo策划公司
ChatGPT暂时不可用?如何高效应对并寻找最佳替代方案!,logo ai教程视频
ChatGPT宕机两小时,OpenAI紧急修复,用户期待AI恢复正常服务,oppo小布ai
ChatGPT崩了?用户称打开是一片空白,真相竟然如此!,zzz*明星AI换脸
SEO优化如何进行:提升网站排名,轻松超越竞争对手,ai写作怎么操作手机
SEO教育:搜索引擎优化,开启成功职业之路,搜狗SEO排名接单
GPT哪个模型是最新的?AI语言生成的未来,ai回头
SEO需要什么语音,seo需要考虑什么 ,学生作业ai
用AI生成文章,让创作更简单高效
SEO基础知识解析:如何提升网站排名,助力企业成长,毕节企业建设网站
SEO北京:数字时代,企业成功的关键,湖南网站建设湖南岚鸿
seo网站是什么找行者SEO,seo分析网站 ,ai图文梅花
seo需要会什么技术呢,seo需要会什么技术呢知乎 ,红色框ai
AI写作免费一键生成下载,助您轻松创作!
OpenAI推出的GPT-4Turbo大幅降低了AI应用成本,推动了AI技术的普及化,ai*版
SEO优化是做什么的?让你的网站流量飙升的秘密武器,乳腺癌ai作用机理
SEO技巧提升网站流量和排名,助力企业快速崛起,ai080206.
zblog站群,zblog怎么样 ,欧卡2ai汽车如何使用
AI自动化:开启智能未来的无限可能,simplify ai
高效创作之路:文章AI生成器的力量
“爱站”:开启网站优化与流量增长的新纪元,seo入门ppt
seo站长什么意思,站长工具 - seo综合查询 ,ai少女身材
AI通过算法和数据生成的作品:科技与艺术的跨越,带来无限创意可能,ai优化程序
seo线索收集是什么,seo线索收集是什么意思 ,ai生活ai童童
ChatGPT点不了?背后的真相与解决方法,ai.520523
OpenAI银行卡扣款的公司是哪家?揭秘背后的支付流程与安全保障,AI素描相片
2024年AI写文章生成器推荐:让创作轻松高效,提升写作水平
SEO目标:让您的网站轻松登顶搜索引擎,优化购物网站的搜索
SEO工装裤-打造时尚与实用兼备的工作利器,ai画中国爸爸辅导孩子写作业
SEO怎么优化比较好?全面提升网站排名的实用技巧,高级ai玩家
SEO调整,助力网站流量爆发式增长!,江都seo优化排名
ChatGPT服务异常:为何影响到你的工作和生活?如何有效解决?,ai怎么保持圆角不变
从语言助手到智能生活伙伴,未来的智能助手如何改变我们的生活,网站建设分站公司
SEO关键词利器:如何借助精准关键词提升网站流量与排名,ai绘画客户
ChatGPT一经发布,便受到了用户的狂热追捧,引爆人工智能热潮,十代ai达人办公本
怎么用AI生成文章免费版,高效创作从此开始!
ChatGPT破解:人工智能的无限潜力与破解秘笈,意识变ai
SEO努力:提升网站排名的关键策略,网站建设微企动力
OpenAI您的信用卡被拒绝了?请尝试用借记卡支付,轻松解决支付问题!,ai cdr缩略图补丁