javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)


Posted in Javascript onNovember 29, 2015

平时工作中写网页涉及的运动往往都非常简单,比如改变宽高,透明度,位置,是最常用的几种形式,为了省事,整合了下,于是就有了下面这个东东:

兼容:IE系列、chrome、firefox、opera、Safari、360

/*
 javascript简易运动
 
 Move.action(dom对象,json格式属性值对,缓动参考值,回调方法)

 示例:
 var box = document.getElementById('Ele');
 Move.action(box,{width:500,height:200,left:200,top:100,marginLeft:10,opacity:.5},5,function(){
  console.log('end');
 });

*/


var Move = {

 version: '1.5',

 //判断是否空对象
 isEmptyObject: function(obj) {
 for (var attr in obj) {
 return false;
 }
 return true;
 },
 //取CSS样式值
 getStyle: function(obj, attr) {
 if (obj.currentStyle) { //IE
 return obj.currentStyle[attr];
 } else {
 return getComputedStyle(obj, null)[attr];
 }
 },
 //运动
 action: function(obj, json, sv, callback) {

 _this = this;

 //obj是否为空
 if (_this.isEmptyObject(obj)) {
 return false;
 }

 //运动开始 
 clearInterval(obj.timer);
 obj.timer = setInterval(function() {
 var isAllCompleted = true, //假设全部运动都完成了
 speed, //速度
 attrValue, //当前值
 targetV; //目标值
 for (attr in json) {
 attrValue = _this.getStyle(obj, attr);
 switch (attr) {
  case 'opacity':
  attrValue = Math.round((isNaN(parseFloat(attrValue)) ? 1 : parseFloat(attrValue)) * 100);
  speed = (json[attr] * 100 - attrValue) / (sv || 4);
  targetV = json[attr] * 100;
  break;
  default:
  attrValue = isNaN(parseInt(attrValue)) ? 0 : parseInt(attrValue);
  speed = (json[attr] - attrValue) / (sv || 4);
  targetV = json[attr];
 }

 speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
 //如果循环过程中存在尚未结束的运动,isAllCompleted为假
 if (attrValue != targetV) {
  isAllCompleted = false;
 }

 switch (attr) {
  case 'opacity':
  {
  obj.style.filter = "alpha(opacity=" + (attrValue + speed) + ")";
  obj.style.opacity = (attrValue + speed) / 100;
  };
  break;
  default:
  obj.style[attr] = attrValue + speed + 'px';
 }
 }

 //所有循环结束后,只有当全部运动结束后(isAllCompleted=true)时才关闭定时器
 if (isAllCompleted) {
 clearInterval(obj.timer);

 if (typeof callback === 'function') {
  callback();
 }

 }
 }, 30);
 }

};

以上就是描述了javascript实现网页中涉及的简易运动的方法,希望对大家实现javascript简易运动有所启发。

Javascript 相关文章推荐
JavaScript入门教程(7) History历史对象
Jan 31 Javascript
JavaScript与DropDownList 区别分析
Jan 01 Javascript
鼠标事件延时切换插件
Mar 12 Javascript
JavaScript实现按照指定长度为数字前面补零输出的方法
Mar 19 Javascript
Ajax使用原生态JS验证用户名是否存在
May 26 Javascript
详细分析jsonp的原理和实现方式
Nov 20 Javascript
vue+mousemove实现鼠标拖动功能(拖动过快失效问题解决方法)
Aug 24 Javascript
React如何解决fetch跨域请求时session失效问题
Nov 02 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
Dec 02 Javascript
一步一步实现Vue的响应式(对象观测)
Sep 02 Javascript
OpenLayers实现图层切换控件
Sep 25 Javascript
全面解析js中的原型,原型对象,原型链
Jan 25 Javascript
通用javascript代码判断版本号是否在版本范围之间
Nov 29 #Javascript
jQuery如何使用自动触发事件trigger
Nov 29 #Javascript
js性能优化技巧
Nov 29 #Javascript
javascript实现C语言经典程序题
Nov 29 #Javascript
JavaScript学习小结(7)之JS RegExp
Nov 29 #Javascript
整理Javascript基础入门学习笔记
Nov 29 #Javascript
jquery+json实现数据二级联动的方法
Nov 28 #Javascript
You might like
PHP字符转义相关函数小结(php下的转义字符串)
2007/04/12 PHP
一张表搞清楚php is_null、empty、isset的区别
2015/07/07 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
jquery触发a标签跳转事件示例代码
2013/07/21 Javascript
JavaScript运行机制之事件循环(Event Loop)详解
2014/10/10 Javascript
基于JS实现的倒计时程序实例
2015/07/24 Javascript
浅谈JSON.stringify()和JOSN.parse()方法的不同
2016/08/29 Javascript
JavaScript之underscore_动力节点Java学院整理
2017/07/03 Javascript
Vue cli 引入第三方JS和CSS的常用方法分享
2018/01/20 Javascript
Vue中的异步组件函数实现代码
2018/07/20 Javascript
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
2019/08/03 Javascript
微信小程序实现上传照片代码实例解析
2020/08/04 Javascript
[01:12](回顾)DOTA2国际邀请赛,全世界DOTAer的盛宴
2014/07/01 DOTA
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
python图片验证码生成代码
2016/07/02 Python
django 外键model的互相读取方法
2018/12/15 Python
python交易记录整合交易类详解
2019/07/03 Python
python查看文件大小和文件夹内容的方法
2019/07/08 Python
Django框架模板用法入门教程
2019/11/04 Python
PyInstaller的安装和使用的详细步骤
2020/06/02 Python
Python Request类源码实现方法及原理解析
2020/08/17 Python
Python读取Excel一列并计算所有对象出现次数的方法
2020/09/04 Python
python 利用matplotlib在3D空间中绘制平面的案例
2021/02/06 Python
css3实现垂直下拉动画菜单示例
2014/04/22 HTML / CSS
美国正宗设计师眼镜在线零售商:EYEZZ
2019/03/23 全球购物
Oracle的内存结构(Memory structures)
2015/06/10 面试题
上海某公司.net方向笔试题
2014/09/14 面试题
生物专业个人自荐信范文
2013/11/29 职场文书
执行总经理岗位职责
2014/02/03 职场文书
上班玩手机检讨书
2014/02/17 职场文书
计算机软件专业求职信
2014/06/10 职场文书
公务员处分决定书
2015/06/25 职场文书
团队合作精神学习心得体会
2016/01/19 职场文书
python b站视频下载的五种版本
2021/05/27 Python
教你用Java Swing实现自助取款机系统
2021/06/11 Java/Android
Win11绿屏怎么办?Win11绿屏死机的解决方法
2021/11/21 数码科技