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 firefox兼容ie的dom方法脚本
May 18 Javascript
jQuery 开天辟地入门篇一
Dec 09 Javascript
javascript 异步页面查询实现代码(asp.net)
May 26 Javascript
js限制文本框为整数和货币的函数代码
Oct 13 Javascript
jquery改变disabled的boolean状态的三种方法
Dec 13 Javascript
js监听滚动条滚动事件使得某个标签内容始终位于同一位置
Jan 24 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
Jun 21 Javascript
jquery延迟对象解析
Oct 26 Javascript
angular.js指令中的controller、compile与link函数的不同之处
May 10 Javascript
Vue.js学习教程之列表渲染详解
May 17 Javascript
关于 angularJS的一些用法
Nov 29 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
May 31 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 函数执行效率的小比较
2010/10/17 PHP
php实现的通用图片处理类
2015/03/24 PHP
php创建桌面快捷方式实现方法
2015/12/31 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
2016/05/18 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
一段效率很高的for循环语句使用方法
2007/08/13 Javascript
图片格式的JavaScript和CSS速查手册
2007/08/20 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
js选取多个或单个元素的实现代码(用class)
2012/08/22 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
JavaScript var声明变量背后的原理示例解析
2013/10/12 Javascript
将json当数据库一样操作的javascript lib
2013/10/28 Javascript
Vue.js动态添加、删除选题的实例代码
2016/09/30 Javascript
jQuery实现圣诞节礼物动画案例解析
2016/12/25 Javascript
原生JS+Canvas实现五子棋游戏实例
2017/06/19 Javascript
vue2.x select2 指令封装详解
2017/10/12 Javascript
EasyUI实现下拉框多选功能
2017/11/07 Javascript
在vue中使用v-bind:class的选项卡方法
2018/09/27 Javascript
JavaScript中数组去重的5种方法
2020/07/04 Javascript
[46:38]完美世界DOTA2联赛PWL S2 Magma vs PXG 第三场 11.28
2020/12/02 DOTA
Python中实现三目运算的方法
2015/06/21 Python
python 变量初始化空列表的例子
2019/11/28 Python
html5中canvas学习笔记2-判断浏览器是否支持canvas
2013/01/06 HTML / CSS
韩国三大免税店之一:THE GRAND 中文免税店
2016/07/21 全球购物
联想韩国官网:Lenovo Korea
2018/05/10 全球购物
阳光体育:Sunny Sports(购买露营和远足设备)
2018/08/07 全球购物
美国用餐电影院:Alamo Drafthouse Cinema
2020/01/23 全球购物
医学专业职业生涯规划范文
2014/02/05 职场文书
企业文化标语口号
2014/06/09 职场文书
出生医学证明书
2014/09/15 职场文书
计划生育证明格式及范本
2014/10/09 职场文书
2015年植树节活动总结
2015/02/06 职场文书
观看焦裕禄观后感
2015/06/09 职场文书
这样写python注释让代码更加的优雅
2021/06/02 Python
Java使用JMeter进行高并发测试
2021/11/23 Java/Android
海康机器人重磅发布全新算法开发平台VM4.2
2022/04/21 数码科技