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读写XML实现广告轮换(兼容IE、FF)
Aug 09 Javascript
js使用eval解析json实例与注意事项分享
Jan 18 Javascript
使用CSS3的scale实现网页整体缩放
Mar 18 Javascript
jQuery mobile类库使用时加载导航历史的方法简介
Dec 04 Javascript
浅谈jQuery 选择器和dom操作
Jun 07 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
Jul 28 Javascript
AngularJS中的拦截器实例详解
Apr 07 Javascript
Vue中的scoped实现原理及穿透方法
May 15 Javascript
layui中table表头样式修改方法
Aug 15 Javascript
解决v-for中使用v-if或者v-bind:class失效的问题
Sep 25 Javascript
jQuery操作事件完整实例分析
Jan 10 jQuery
uni-app使用countdown插件实现倒计时
Nov 01 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/01/05 PHP
php 日期和时间的处理-郑阿奇(续)
2011/07/04 PHP
Yii中使用PHPExcel导出Excel的方法
2014/12/26 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
2015/03/25 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
优化 JavaScript 代码的方法小结
2009/07/16 Javascript
javascript实现禁止右键和F12查看源代码
2014/12/26 Javascript
谈谈jQuery Ajax用法详解
2015/11/27 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
2015/11/30 Javascript
漂亮! js实现颜色渐变效果
2016/08/12 Javascript
图文详解Javascript中的上下文和作用域
2017/02/15 Javascript
JS实现为动态创建的元素添加事件操作示例
2018/03/17 Javascript
Vue 页面切换效果之 BubbleTransition(推荐)
2018/04/08 Javascript
vue中锚点的三种方法
2018/07/06 Javascript
快速解决select2在bootstrap模态框中下拉框隐藏的问题
2018/08/10 Javascript
Vue-router 报错NavigationDuplicated的解决方法
2020/03/31 Javascript
使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
2014/04/25 Python
Python采用Django制作简易的知乎日报API
2016/08/03 Python
Python实现读取机器硬件信息的方法示例
2018/06/09 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
pycharm中成功运行图片的配置教程
2018/10/28 Python
python 返回列表中某个值的索引方法
2018/11/07 Python
简洁自适应404页面HTML好看的404源码
2020/12/16 HTML / CSS
ALDO美国官网:加拿大女鞋品牌
2018/12/28 全球购物
ColourPop美国官网:卡拉泡泡,洛杉矶彩妆品牌
2019/04/28 全球购物
Mansur Gavriel官网:纽约市的一个设计品牌
2019/05/02 全球购物
Linux内核的同步机制是什么?主要有哪几种内核锁
2016/07/11 面试题
《猴子种树》教学反思
2014/02/14 职场文书
信息管理应届生求职信
2014/03/07 职场文书
小学班干部竞选演讲稿
2014/04/24 职场文书
致接力运动员加油稿
2015/07/21 职场文书
2015年学校消防安全工作总结
2015/10/14 职场文书
Python绘制地图神器folium的新人入门指南
2021/05/23 Python
python实现手机推送 代码也就10行左右
2022/04/12 Python
MySQL 数据库 增删查改、克隆、外键 等操作
2022/05/11 MySQL