JavaScript 创建运动框架的实现代码


Posted in Javascript onMay 08, 2013

封装好的运动框架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 相关文章推荐
jQuery中offsetParent()方法用法实例
Jan 19 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
Mar 25 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
Apr 07 Javascript
全面了解JS中的匿名函数
Jun 29 Javascript
AngularJS 实现弹性盒子布局的方法
Aug 30 Javascript
基于JS实现类似支付宝支付密码输入框
Sep 02 Javascript
详解jquery easyui之datagrid使用参考
Dec 05 Javascript
实现JavaScript高性能的数据存储
Dec 11 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
Dec 14 Javascript
浅谈webpack下的AOP式无侵入注入
Nov 12 Javascript
TypeScript开发Node.js程序的方法
Apr 30 Javascript
vue store之状态管理模式的详细介绍
Jun 13 Javascript
jQuery输入城市查看地图使用介绍
May 08 #Javascript
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
May 08 #Javascript
基于jquery实现拆分姓名的方法(纯JS版)
May 08 #Javascript
jQuery cdn使用介绍
May 08 #Javascript
不用锚点也可以平滑滚动到页面的指定位置实现代码
May 08 #Javascript
jquery实现图片左右间隔滚动特效(可自动播放)
May 08 #Javascript
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
May 08 #Javascript
You might like
php中opendir函数用法实例
2014/11/15 PHP
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
JavaScript实际应用:innerHTMl和确认提示的使用
2006/06/22 Javascript
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
JavaScript学习点滴 call、apply的区别
2010/10/22 Javascript
js模仿html5 placeholder适应于不支持的浏览器
2013/01/13 Javascript
Javascript实现关联数据(Linked Data)查询及注意细节
2013/02/22 Javascript
js获得鼠标的坐标值的方法
2013/03/13 Javascript
javascript中的括号()用法小结
2014/04/14 Javascript
Angularjs实现多个页面共享数据的方式
2016/03/29 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
2016/04/03 Javascript
jQuery实现图片向左向右切换效果的简单实例
2016/05/18 Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
2016/10/27 Javascript
jquery之基本选择器practice(实例讲解)
2017/09/30 jQuery
详解vue.js之props传递参数
2017/12/12 Javascript
非常漂亮的js烟花效果
2020/03/10 Javascript
[07:03]显微镜下的DOTA2第九期——430圣堂刺客杀戮秀
2014/06/20 DOTA
利用python编写一个图片主色转换的脚本
2017/12/07 Python
利用Python yagmail三行代码实现发送邮件
2018/05/11 Python
Python解析Excle文件中的数据方法
2018/10/23 Python
Python3字符串encode与decode的讲解
2019/04/02 Python
Python中的引用知识点总结
2019/05/20 Python
基于django 的orm中非主键自增的实现方式
2020/05/18 Python
浅谈对python中if、elif、else的误解
2020/08/20 Python
python使用布隆过滤器的实现示例
2020/08/20 Python
Python如何实现感知器的逻辑电路
2020/12/25 Python
python解包概念及实例
2021/02/17 Python
英国第一蛋白粉品牌:Myprotein
2016/09/14 全球购物
全球知名提供各类营养保健品的零售商:Vitamin Shoppe
2016/10/09 全球购物
美国儿童玩具、装扮和玩偶商店:Magic Cabin
2018/09/02 全球购物
GANT葡萄牙官方商店:拥有美国运动服传统的生活方式品牌
2018/10/18 全球购物
大学军训感言
2014/01/10 职场文书
2014年师德承诺书
2014/05/23 职场文书
厨师长岗位职责范本
2014/08/25 职场文书
初中毕业生自我评价
2015/03/02 职场文书