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 图片的展开和伸缩实例讲解
Apr 18 Javascript
JavaScript修改浏览器tab标题小技巧
Jan 06 Javascript
css如何让浮动元素水平居中
Aug 07 Javascript
Bootstrap模态对话框的简单使用
Apr 29 Javascript
用JS动态改变表单form里的action值属性的两种方法
May 25 Javascript
基于jQuery ligerUI实现分页样式
Sep 18 Javascript
js通过classname来获取元素的方法
Nov 24 Javascript
基于Vue实现后台系统权限控制的示例代码
Aug 29 Javascript
javascript 判断用户有没有操作页面
Oct 17 Javascript
浅谈Node Inspector 代理实现
Oct 19 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&平移轮播效果
Aug 16 Javascript
JavaScript实现省市联动效果
Nov 22 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 is_dir() 判断给定文件名是否是一个目录
2010/05/10 PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
2014/06/12 PHP
PHPExcel实现的读取多工作表操作示例
2020/04/14 PHP
function, new function, new Function之间的区别
2007/03/08 Javascript
Javascript中判断变量是数组还是对象(array还是object)
2013/08/14 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
2015/02/26 Javascript
jQuery晃动层特效实现方法
2015/03/09 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
2015/08/21 Javascript
巧用Vue.js+Vuex制作专门收藏微信公众号的app
2016/11/03 Javascript
基于Vue.js实现简单搜索框
2020/03/26 Javascript
微信小程序 input输入框详解及简单实例
2017/01/10 Javascript
vue学习笔记之vue1.0和vue2.0的区别介绍
2017/05/17 Javascript
详解在 Angular 项目中添加 clean-blog 模板
2017/07/04 Javascript
vue生成随机验证码的示例代码
2017/09/29 Javascript
vue项目首屏打开速度慢的解决方法
2019/03/31 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
2019/05/18 Javascript
json字符串对象转换代码实例
2019/09/28 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
vue-router重写push方法,解决相同路径跳转报错问题
2020/08/07 Javascript
js属性对象的hasOwnProperty方法的使用
2021/02/05 Javascript
[01:24:51]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第二场
2014/05/26 DOTA
python生成随机验证码(中文验证码)示例
2014/04/03 Python
python开发利器之ulipad的使用实践
2017/03/16 Python
Python处理Excel文件实例代码
2017/06/20 Python
Python3 实现随机生成一组不重复数并按行写入文件
2018/04/09 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
Python实现微信好友的数据分析
2019/12/16 Python
Python中zip函数如何使用
2020/06/04 Python
Talbots官网:美国成熟女装品牌
2019/11/15 全球购物
工商管理本科毕业生求职信范文
2013/10/05 职场文书
幼儿如何来做好自我评价
2013/11/05 职场文书
音乐专业自荐信
2014/02/07 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
敬业奉献模范事迹材料
2014/12/24 职场文书
廉政承诺书2015
2015/04/28 职场文书