博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript——创建运动框架
阅读量:5155 次
发布时间:2019-06-13

本文共 1958 字,大约阅读时间需要 6 分钟。

封装好的运动框架Move(obj,attr,iTarget),可直接调用:

可用于设置width、border、fontSize、marginLeft、opacity等许多常见属性值的变速变化,实现各种有趣效果。

兼容IE和FF。

/****************    *    *   IE-BUG:    *   在IE中,设置opacity属性时,元素样式中需要设置opacity属性,才能读取到opacity值。    *    *   obj:元素对象。   attr:用引号包围的属性名。   iTarget:属性目标值。    *    *****************/    function Move(obj,attr,iTarget){        clearInterval(obj.timer);//关闭前一个定时器,解决对同个对象同时调用多个Move()时,定时器叠加问题。使用obj.timer给每个调用Move()的对象赋予各自的定时器,防止多个对象同时调用Move()时,同用一个定时器,而导致相关干扰问题。        obj.timer=setInterval(function(){            var cur=0;//创建一个变量,用于存储 attr属性每时每刻的值            if(attr=="opacity"){            //针对在FF中opacity属性值为浮点数值问题,将属性值 四舍五入、转换成浮点型。乘以100,使opacity属性值与IE统一为百分数                cur=Math.round(parseFloat(getStyle(obj,attr))*100);            }else{                cur=parseInt(getStyle(obj,attr));//将除opacity外的属性(width/fontSize/MarginLeft等)的初始值 转换为整型            }            var speed=(iTarget-cur)/10;//创建 递减的速度speed变量。实现属性值的变速改变            speed=speed>0?Math.ceil(speed):Math.floor(speed);//取整,解决浏览器忽略小于1px的数值 导致运动结束时,离目标值Itarget少几个像素的问题            if(iTarget==cur){
//当目标值等于目标值时,结束定时器 clearInterval(obj.timer); }else{ cur+=speed;//当前值cur 加上 递减的速度值speed if(attr=="opacity"){ // 分别对IE和FF设置opacity属性值 obj.style.filter="alpha(opacity:"+cur+")"; //for IE obj.style.opacity=cur/100; //for FF }else{ obj.style[attr]=cur+"px"; //给指定属性attr 添加值cur+speed } } },30); } //getStyle()函数 用于兼容IE和FF:获取 对象的 非行间样式中的属性的值。 obj:元素对象。 name:属性名。 function getStyle(obj,name){ if(obj.currentStyle){ return obj.currentStyle[name];//for IE }else{ return getComputedStyle(obj,false)[name];//for FF } }

 

分享自学“智能社“的”JavaScript运动“视频教程后的实践成果~

推荐JS初学者去看看推出的JS教程。

转载于:https://www.cnblogs.com/slowsoul/archive/2013/02/21/2921354.html

你可能感兴趣的文章
26、linux 几个C函数,nanosleep,lstat,unlink
查看>>
投标项目的脚本练习2
查看>>
201521123107 《Java程序设计》第9周学习总结
查看>>
Caroline--chochukmo
查看>>
iOS之文本属性Attributes的使用
查看>>
从.Net版本演变看String和StringBuilder性能之争
查看>>
Excel操作 Microsoft.Office.Interop.Excel.dll的使用
查看>>
解决Ubuntu下博通网卡驱动问题
查看>>
【bzoj2788】Festival
查看>>
执行gem install dryrun错误
查看>>
Java SE之正则表达式一:概述
查看>>
HTML5简单入门系列(四)
查看>>
实现字符串反转
查看>>
转载:《TypeScript 中文入门教程》 5、命名空间和模块
查看>>
苹果开发中常用英语单词
查看>>
[USACO 1.4.3]等差数列
查看>>
Shader Overview
查看>>
Reveal 配置与使用
查看>>
Java中反射的学习与理解(一)
查看>>
C语言初学 俩数相除问题
查看>>