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 相关文章推荐
JavaScript Event学习第十章 一些可替换的事件对
Feb 10 Javascript
json格式化/压缩工具 Chrome插件扩展版
May 25 Javascript
jquery 中多条件选择器,相对选择器,层次选择器的区别
Jul 03 Javascript
js登录弹出层特效
Mar 07 Javascript
js实现jquery的offset()方法实例
Jan 10 Javascript
vue如何获取点击事件源的方法
Aug 10 Javascript
JS实现的简单表单验证功能示例
Oct 13 Javascript
vue 音乐App QQ音乐搜索列表最新接口跨域设置方法
Sep 25 Javascript
IntelliJ IDEA编辑器配置vue高亮显示
Sep 26 Javascript
vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)
Feb 25 Javascript
vue element 关闭当前tab 跳转到上一路由操作
Jul 22 Javascript
使用webpack5从0到1搭建一个react项目的实现步骤
Dec 16 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
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
php 如何获取文件的后缀名
2016/06/05 PHP
PHP处理二进制数据的实现方法
2016/06/13 PHP
在laravel中实现事务回滚的方法
2019/10/10 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
缓动函数requestAnimationFrame 更好的实现浏览器经动画
2012/12/07 Javascript
Jquery easyUI 更新行示例
2014/03/06 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
2015/04/06 Javascript
微信小程序 教程之数据绑定
2016/10/18 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
用Vue.extend构建消息提示组件的方法实例
2017/08/08 Javascript
JS实现websocket长轮询实时消息提示的效果
2017/10/10 Javascript
JavaScript设计模式之构造函数模式实例教程
2018/07/02 Javascript
Vue在页面数据渲染完成之后的调用方法
2018/09/11 Javascript
详解如何为你的angular app构建一个第三方库
2018/12/07 Javascript
vue多次循环操作示例
2019/02/08 Javascript
jQuery中使用validate插件校验表单功能
2019/05/24 jQuery
JavaScript canvas基于数组生成柱状图代码实例
2020/03/06 Javascript
opencv python 2D直方图的示例代码
2018/07/20 Python
Python读取txt某几列绘图的方法
2018/10/14 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
使用k8s部署Django项目的方法步骤
2019/01/14 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
2019/04/02 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
2020/11/24 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
2021/02/02 Python
用React加CSS3实现微信拆红包动画效果
2017/03/13 HTML / CSS
毕业生找工作的自我评价
2013/10/18 职场文书
文员岗位职责
2013/11/09 职场文书
军训自我鉴定200字
2014/02/13 职场文书
大学生学习面向未来的赶考思想汇报
2014/09/12 职场文书
党支部遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
副总经理岗位职责范本
2014/09/30 职场文书
MongoDB数据库部署环境准备及使用介绍
2022/03/21 MongoDB
spring boot实现文件上传
2022/08/14 Java/Android