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

浅谈原生JS实现jQuery的animate | 动画示例

浅谈原生JS实现jQuery的animate | 动画示例

本文介绍了浅谈原生JS实现jQuery的animate()动画示例,希望此文章对各位有所帮助。

参数介绍:

obj
执行动画的元素
css JSON数值对,形式为“{属性名: 属性值}",指要执行动画的书序及其对应值
interval
属性每执行一次改变的时间间隔
speedFactor 速度因子,使动画具有缓冲效果,而不是匀速不变(speedFactor为1)
func 执行完动画后的回调函数

注意:

必须为每一个元素分别添加一个定时器,否则会互相影响。

cur != css[arr]判断是否每一个属性已经达到目标值。只有所有属性都达到目标值,才会清除定时器,flag的作用是防止某个属性第一个达到目标值但还有其他属性没有达到目标值的情况下清除定时器。因此,在每次改变前初始化flag为true,只要遇到一个没有达到目标的属性,就将flag置为false,直至所有属性达到目标值才清除定时器。

属性值opacity的值有小数,所以需要特殊处理: Math.ceil(speed)和Math.floor(speed)以及* 100和 / 100操作。

function animate(obj, css, interval, speedFactor, func) {   clearInterval(obj.timer);   function getCss(obj, prop) {     if (obj.currentStyle)       return obj.currentStyle[prop]; // ie     else        return document.defaultView.getComputedStyle(obj, null)[prop]; // 非ie   }   obj.timer = setInterval(function(){     var flag = true;     for (var prop in css) {       var cur = 0;       if(prop == "opacity")          cur = Math.round(parseFloat(getStyle(obj, prop)) * 100);       else          cur = parseInt(getStyle(obj, prop));       var speed = (css[prop] - cur) * speedFactor;       speed = speed > 0 ? Math.ceil(speed): Math.floor(speed);       if (cur != css[prop])         flag = false;       if (prop == "opacity") {         obj.style.filter = "alpha(opacity : '+(cur + speed)+' )";         obj.style.opacity = (cur + speed) / 100; }       else          obj.style[prop] = cur + speed + "px";     }     if (flag) {       clearInterval(obj.timer);       if (func)         func();     }   }, interval); } var li = document.getElementsByTagName("li"); for(var i = 0; i < li.length; i ++){   li[i].onmouseover = function(){     animate(this, {width: 100, opacity: 0.5}, 10, 0.01, function(){       alert("Finished!");     });   } } 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关文章

wps演示怎么插入页面编码

wps演示怎么插入页面编码

方法,编码,演示,页码,页面,  在使用WPS演示制作幻灯片时,有时需要在幻灯片里插入页码,那么怎么在幻灯片里插入页码呢?具体的炒作方法下面小编教你怎么做吧,欢迎大家来到学习wps演示插入页码的方法。wps演示插入页码的方法首先在电脑上打开wp…

PPT幻灯片的制作技巧有哪些方法上

PPT幻灯片的制作技巧有哪些方法上

方法,幻灯片,技巧,十招,有哪些,  幻灯片的十招顶级技巧前五:1.保持简单;2.少用项目符号和文本;3.少用切换和构建对象(动画);4.使用高品质的图片;5.采用视觉化的主题,但避免使用PPT模板。以下是小编为您带来的关于幻灯片的十招顶级技巧上,希…

怎样在Excel中图表与的完美结合

怎样在Excel中图表与的完美结合

图表,完美,图片,电脑软件,Excel,  在数学课上,如果老师将图表和图片完美结合,或许会驱赶同学瞌睡虫激发学习兴趣。灵活运用Excel表格的老师,一定会被学生喜爱的。以下是小编为您带来的关于Excel图表与图片的完美结合,希望对您有所帮助。Excel…

js实现用户输入的小写字母自动转大

js实现用户输入的小写字母自动转大

用户,方法,输入,大写字母,字母,实例如下:<script language="JavaScript"> function toUpperCase(obj) { obj.value = obj.value.toUpperCase() }</script> <body> <input type="text" id="txt1" value="" onkeyup="toUpperCase(thi…

excel表格数值都乘以一个数的操作

excel表格数值都乘以一个数的操作

教程,操作,数值,表格,个数,  Excel中具体该如何让每个数值都乘以一个数呢?接下来是小编为大家带来的excel表格数值都乘以一个数的操作教程,供大家参考。excel表格数值都乘以一个数的操作教程数值乘一个数步骤1:比如在A列,原来使用的单位是吨…

JS数组去重(4种方法)

JS数组去重(4种方法)

数组去重,种方法,电脑软件,JS,第一种:双重循环var ary=[1,2,3,3,2,3,4,5];for(var i=0;i<ary.length;i++){ for(var j=i+1;j<ary.length;j++){ if(ary[i]===ary[j]){ ary.splice(i,1); i--; } }}alert(ary);第二种:新数组 …

qq申请怎么才能不用手机号码如何不

qq申请怎么才能不用手机号码如何不

注册,方法,手机号码,号码,电脑软件,  很多人想申请个QQ小号,但是在遇到要验证手机时犯难了,因为一个手机只能绑定一个QQ号码,那么如何不用手机就注册申请QQ呢?那就让小编来告诉你不用手机号码申请qq号码的方法吧!不用手机号码申请qq号码的方…

Express+Nodejs 下的登录拦截实现

Express+Nodejs 下的登录拦截实现

登录拦截,代码,电脑软件,Express,Nodejs,原来一直不知道怎么在Express+Nodejs里面添加类似于Struts2的拦截器(因为要使用登录拦截的功能)。以前一直以为在router这块添加类似一下的转移路由控制权代码的(每个都加很麻烦)app.get('/show', con…

JavaScript中关于class的调用方法

JavaScript中关于class的调用方法

调用方法,电脑软件,JavaScript,class,PS:class的调用,其实是可以叠加的,当然了这要求样式不同的情况下,如果样式相同,则后一个样式会覆盖前一个样式。1、举例如下:<div id="test" class="aaa bbb">测试关于class的调用</div>.aaa{ font-size:…

ppt2010中smartart工具怎么使用

ppt2010中smartart工具怎么使用

图形,工具,电脑软件,smartart,SmartArt,  在制作PPT演示文稿的过程中,可以充分利用ppt自带的SmartArt图形。来充分表现演讲者的思想。那么SmartArt大家知道是什么吧?下面小编就为你详解ppt中的SmartArt图形怎么使用吧。ppt2010的SmartArt…

js封装成插件的步骤方法

js封装成插件的步骤方法

步骤,封装,插件,方法,电脑软件,由于项目原因,工作一年多还没用js写过插件,项目太成熟,平时基本都是在使用已经封装好的功能插件。感觉自己好low......这两天想自己抽空写一个canvas画统计图与折现图的插件,所以就去网上学习了下如何封装.....虽…

Excel表格怎么画任意划线Excel表格

Excel表格怎么画任意划线Excel表格

步骤,实线,方法,教程,表格,  工作中常遇到需要在表格中对某些部分任意标出,达到如用笔在纸质表格上表明一样的效果。利用插入形状,能够实现。下面小编教你Excel表格画任意划线的具体步骤。希望对你有帮助!Excel表格中任意划线的步骤打开需要…