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 相关文章推荐
Jquery+JSon 无刷新分页实现代码
Apr 01 Javascript
JavaScript接口实现代码 (Interfaces In JavaScript)
Jun 11 Javascript
jQuery获取地址栏参数插件(模仿C#)
Oct 26 Javascript
createElement与createDocumentFragment的点点区别小结
Dec 19 Javascript
浅谈JavaScript 覆盖原型以及更改原型
Aug 31 Javascript
Vue监听数据对象变化源码
Mar 09 Javascript
Vue实现选择城市功能
May 27 Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
Mar 13 Javascript
jQuery实现侧边栏隐藏与显示的方法详解
Dec 22 jQuery
微信小程序:数据存储、传值、取值详解
May 07 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
May 28 Javascript
vue实现从外部修改组件内部的变量的值
Jul 30 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的宝库目录--PEAR
2006/10/09 PHP
Php做的端口嗅探器--可以指定网站和端口
2006/10/09 PHP
PHP带节点操作的无限分类实现方法详解
2016/11/09 PHP
Yii2单元测试用法示例
2016/11/12 PHP
浅析XMLHttpRequest的缓存问题
2013/12/13 Javascript
Jquery如何实现点击时高亮显示代码
2014/01/22 Javascript
javascript的document.referrer浏览器支持、失效情况总结
2014/07/18 Javascript
js和jquery中循环的退出和继续下一个循环
2014/09/03 Javascript
js获取滚动距离的方法
2015/05/30 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
详解JavaScript函数对象
2015/11/15 Javascript
微信js-sdk地理位置接口用法示例
2016/10/12 Javascript
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
2017/05/08 jQuery
es6在react中的应用代码解析
2017/11/08 Javascript
深入浅出理解JavaScript闭包的功能与用法
2018/08/01 Javascript
Angular设置别名alias的方法
2018/11/08 Javascript
JS实现网页时钟特效
2020/03/25 Javascript
nuxt+axios实现打包后动态修改请求地址的方法
2020/04/22 Javascript
简介JavaScript错误处理机制
2020/08/04 Javascript
Python利用多进程将大量数据放入有限内存的教程
2015/04/01 Python
Python的函数的一些高阶特性
2015/04/27 Python
Python中用max()方法求最大值的介绍
2015/05/15 Python
Python实现以时间换空间的缓存替换算法
2016/02/19 Python
深入理解Python3中的http.client模块
2017/03/29 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
Django模板Templates使用方法详解
2019/07/19 Python
python excel转换csv代码实例
2019/08/26 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
纯CSS3实现8组超炫酷鼠标滑过图片动画
2016/03/16 HTML / CSS
大学生职业规划范文:象牙塔生活的四年计划
2014/01/14 职场文书
教师求职自荐信
2014/03/09 职场文书
法人代表任命书范本
2014/06/05 职场文书
语文教育专业求职信
2014/06/28 职场文书
党的群众路线学习笔记
2014/11/06 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书
2015年林业工作总结
2015/05/14 职场文书