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 相关文章推荐
ext 列表页面关于多行查询的办法
Mar 25 Javascript
JavaScript异步回调的Promise模式封装实例
Jun 07 Javascript
Angular用来控制元素的展示与否的原生指令介绍
Jan 07 Javascript
jquery使用正则表达式验证email地址的方法
Jan 22 Javascript
使用命令对象代替switch语句的写法示例
Feb 28 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
Jun 09 Javascript
JS创建对象的写法示例
Nov 04 Javascript
JavaScript 下载svg图片为png格式
Jun 21 Javascript
JavaScript 2018 中即将迎来的新功能
Sep 21 Javascript
基于JS实现一个随机生成验证码功能
May 29 Javascript
koa2服务端使用jwt进行鉴权及路由权限分发的流程分析
Jul 22 Javascript
js+canvas实现画板功能
Sep 13 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正则匹配汉字的方法介绍
2013/04/25 PHP
从零开始学YII2框架(四)扩展插件yii2-kartikgii
2014/08/20 PHP
php实现搜索类封装示例
2016/03/31 PHP
php实现贪吃蛇小游戏
2016/07/26 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
用js怎么把&字符换成"&amp:"
2006/10/19 Javascript
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
JavaScript 验证浏览器是否支持javascript的方法小结
2009/05/17 Javascript
js 表单提交后按钮变灰的实例代码
2013/08/16 Javascript
判定是否原生方法的JS代码
2013/11/12 Javascript
jQuery中filter()方法用法实例
2015/01/06 Javascript
jQuery实现伸展与合拢panel的方法
2015/04/30 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
node.js插件nodeclipse安装图文教程
2020/10/19 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
2016/06/02 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
Vue2.0 多 Tab切换组件的封装实例
2017/07/28 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
inquirer.js一个用户与命令行交互的工具详解
2019/05/18 Javascript
nodejs nedb 封装库与使用方法示例
2020/02/06 NodeJs
Python的Flask开发框架简单上手笔记
2015/11/16 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
2018/08/22 Python
python中单例常用的几种实现方法总结
2018/10/13 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
2020/02/14 Python
python如何提取英语pdf内容并翻译
2020/03/03 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
英国领先的维生素和补充剂品牌:Higher Nature
2019/08/26 全球购物
英国100%防污和防水的靴子:Muck Boot Company
2020/09/08 全球购物
社区志愿者心得体会
2014/01/03 职场文书
管理标语大全
2014/06/24 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
中学生旷课检讨书2篇
2014/10/09 职场文书
2015年教师党员公开承诺书
2015/01/22 职场文书
本科毕业论文答辩稿
2015/06/23 职场文书
手残删除python之后的补救方法
2021/06/26 Python