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 相关文章推荐
JS代码格式化和语法着色V2
Oct 14 Javascript
索趣科技的答案
Feb 07 Javascript
js控制web打印(局部打印)方法整理
May 29 Javascript
使用js解决由border属性引起的div宽度问题
Nov 26 Javascript
利用jquery操作Radio方法小结
Oct 20 Javascript
js+HTML5实现视频截图的方法
Jun 16 Javascript
深入解析JavaScript中的arguments对象
Jun 12 Javascript
ES6新特性之类(Class)和继承(Extends)相关概念与用法分析
May 24 Javascript
获取本机IP地址的实例(JavaScript / Node.js)
Nov 24 Javascript
VueCli3构建TS项目的方法步骤
Nov 07 Javascript
vue 详情跳转至列表页实现列表页缓存
Mar 27 Javascript
Vue 2.0 侦听器 watch属性代码详解
Jun 19 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使HTML标签自动补全闭合函数代码
2012/10/04 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
深入理解PHP之OpCode原理详解
2016/06/01 PHP
解决laravel 出现ajax请求419(unknown status)的问题
2019/09/03 PHP
js实现进度条的方法
2015/02/13 Javascript
使用nodejs开发cli项目实例
2015/06/03 NodeJs
javascript实现根据汉字获取简拼
2016/09/25 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
详解Vue + Vuex 如何使用 vm.$nextTick
2017/11/20 Javascript
JavaScript如何实现元素全排列实例代码
2019/05/14 Javascript
Node.js安装详细步骤教程(Windows版)详解
2019/09/01 Javascript
解决vue中的无限循环问题
2020/07/27 Javascript
Javascript前端下载后台传来的文件流代码实例
2020/08/18 Javascript
在vue项目中引用Antv G2,以饼图为例讲解
2020/10/28 Javascript
[55:45]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第一局
2016/02/28 DOTA
[36:20]KG vs SECRET 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python写的一个简单DNS服务器实例
2014/06/04 Python
python实现带错误处理功能的远程文件读取方法
2015/04/29 Python
安装python3的时候就是输入python3死活没有反应的解决方法
2018/01/24 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
2018/12/19 Python
在Python 不同级目录之间模块的调用方法
2019/01/19 Python
使用Django开发简单接口实现文章增删改查
2019/05/09 Python
python中with语句结合上下文管理器操作详解
2019/12/19 Python
css3给背景图片加颜色遮罩的方法
2019/11/05 HTML / CSS
让IE支持HTML5的方法
2012/12/11 HTML / CSS
印度婴儿用品在线商店:Firstcry.com
2016/12/05 全球购物
巴西Mr. Cat在线商店:购买包包和鞋子
2019/09/08 全球购物
编写类String的构造函数、析构函数和赋值函数
2012/05/29 面试题
财务人员个人求职信范文
2013/12/04 职场文书
服务行业个人求职的自我评价
2013/12/12 职场文书
公司中层干部的自我评价分享
2014/03/01 职场文书
后勤管理员岗位职责
2014/08/27 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
自主招生自荐信格式
2015/03/04 职场文书
php 防护xss,PHP的防御XSS注入的终极解决方案
2021/04/01 PHP
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
2021/04/12 Python