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之事件绑定
Jul 08 Javascript
深入浅析JavaScript系列(13):This? Yes,this!
Jan 05 Javascript
基于javascript实现按圆形排列DIV元素(三)
Dec 02 Javascript
Bootstrap modal使用及点击外部不消失的解决方法
Dec 13 Javascript
bootstrap 表单验证使用方法
Jan 11 Javascript
AngularJS实现动态添加Option的方法
May 17 Javascript
JS实现百度搜索接口及链接功能实例代码
Feb 02 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
Aug 08 Javascript
详解在vue-cli项目下简单使用mockjs模拟数据
Oct 19 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
Jun 10 Javascript
vue实现行列转换的一种方法
Aug 06 Javascript
js+html实现点名系统功能
Nov 05 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计算数组不为空元素个数的方法
2014/01/27 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
PHP实现的简单组词算法示例
2018/04/10 PHP
Javascript实现的鼠标经过时播放声音
2010/05/18 Javascript
动态添加删除表格行的js实现代码
2014/02/28 Javascript
jQuery+CSS3实现树叶飘落特效
2015/02/01 Javascript
JS使用post提交的两种方式
2015/12/03 Javascript
关于cookie的初识和运用(js和jq)
2016/04/07 Javascript
关于JS中的方法是否加括号的问题
2016/07/27 Javascript
javascript深拷贝(deepClone)详解
2016/08/24 Javascript
原生js仿jquery实现对Ajax的封装
2016/10/04 Javascript
Windows下使用Nodejs运行js的方法
2017/09/02 NodeJs
Vue 2.0入门基础知识之内部指令详解
2017/10/15 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
使用mpvue搭建一个初始小程序及项目配置方法
2018/12/03 Javascript
详解Vue.js v-for不支持IE9的解决方法
2018/12/29 Javascript
vue项目中使用fetch的实现方法
2019/04/25 Javascript
基于axios 的responseType类型的设置方法
2019/10/29 Javascript
[01:46]2018完美盛典章节片——坚守
2018/12/17 DOTA
[37:45]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第二场 12.09
2020/12/11 DOTA
全面了解python中的类,对象,方法,属性
2016/09/11 Python
Flask框架的学习指南之用户登录管理
2016/11/20 Python
Python初学时购物车程序练习实例(推荐)
2017/08/08 Python
如何高效使用Python字典的方法详解
2017/08/31 Python
利用python实现PSO算法优化二元函数
2019/11/13 Python
Django 实现外键去除自动添加的后缀‘_id’
2019/11/15 Python
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
python 的topk算法实例
2020/04/02 Python
乌克兰香水和化妆品网站:Notino.ua
2018/03/26 全球购物
LODI女鞋在线商店:阿利坎特的鞋类品牌
2019/02/15 全球购物
下面代码从性能上考虑,有什么问题
2015/04/03 面试题
销售自我评价
2013/10/22 职场文书
编辑找工作求职信范文
2013/12/16 职场文书
小学庆六一活动方案
2014/02/28 职场文书
田径运动会通讯稿
2015/07/18 职场文书
交互式可视化js库gojs使用介绍及技巧
2022/02/18 Javascript