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 源码分析笔记(3) Deferred机制
Jun 19 Javascript
JavaScript匿名函数用法分析
Feb 13 Javascript
jquery实现简单Tab切换菜单效果
Jul 17 Javascript
Angularjs中controller的三种写法分享
Sep 21 Javascript
node.js实现登录注册页面
Apr 08 Javascript
ES6入门教程之Iterator与for...of循环详解
May 17 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)
Jan 23 Javascript
vue计算属性get和set用法示例
Feb 08 Javascript
express框架下使用session的方法
Jul 31 Javascript
layui 中select下拉change事件失效的解决方法
Sep 20 Javascript
详解如何在JS代码中消灭for循环
Dec 11 Javascript
如何开发一个渐进式Web应用程序PWA
May 10 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连接MySQL代码的参数说明
2008/06/07 PHP
深入解析yii权限分级式访问控制的实现(非RBAC法)
2013/06/13 PHP
php获取远程图片并下载保存到本地的方法分析
2016/10/08 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
Yii框架参数配置文件params用法实例分析
2019/09/11 PHP
读jQuery之一(对象的组成)
2011/06/11 Javascript
jQuery(1.6.3) 中css方法对浮动的实现缺陷分析
2011/09/09 Javascript
用javascript添加控件自定义属性解析
2013/11/25 Javascript
从零学JSON之JSON数据结构
2014/05/19 Javascript
thinkphp 表名 大小写 窍门
2015/02/01 Javascript
关于Angularjs中自定义指令一些有价值的细节和技巧小结
2018/04/22 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
解决vue-photo-preview 异步图片放大失效的问题
2020/07/29 Javascript
Javascript前端下载后台传来的文件流代码实例
2020/08/18 Javascript
JS时间戳与日期格式互相转换的简单方法示例
2021/01/30 Javascript
[05:14]辉夜杯主赛事第二日 RECAP精彩回顾
2015/12/27 DOTA
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
django 解决manage.py migrate无效的问题
2018/05/27 Python
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
Python利用requests模块下载图片实例代码
2019/08/12 Python
python同步两个文件夹下的内容
2019/08/29 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
2020/06/15 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
2020/08/17 Python
css3实现圆锥渐变conic-gradient效果
2020/02/12 HTML / CSS
澳大利亚潮流尖端的快时尚品牌:Cotton On
2016/09/26 全球购物
介绍一下linux文件系统分配策略
2013/02/25 面试题
实习自我鉴定模板
2013/09/28 职场文书
门诊挂号室室长岗位职责
2013/11/27 职场文书
出纳担保书范文
2014/04/02 职场文书
工程负责人任命书
2014/06/06 职场文书
机械设计及其自动化专业求职信
2014/06/09 职场文书
幼儿园门卫岗位职责范本
2014/07/02 职场文书
销售简历自我评价怎么写
2014/09/26 职场文书
2016年党校科级干部培训班学习心得体会
2016/01/06 职场文书
信息技术课教学反思
2016/02/23 职场文书