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的学习步骤
Feb 23 Javascript
jQuery+json实现的简易Ajax调用实例
Dec 14 Javascript
javascript实现checkbox复选框实例代码
Jan 10 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
Aug 08 Javascript
js Canvas绘制圆形时钟教程
Feb 06 Javascript
JavaScript数组去重的多种方法(四种)
Sep 19 Javascript
详解http访问解析流程原理
Oct 18 Javascript
微信小程序中this.data与this.setData的区别详解
Sep 17 Javascript
Vuex 使用 v-model 配合 state的方法
Nov 13 Javascript
详解Vue 换肤方案验证
Aug 28 Javascript
小程序外卖订单界面的示例代码
Dec 30 Javascript
js 将多个对象合并成一个对象 assign方法的实现
Sep 24 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
thinkphp3.2点击刷新生成验证码
2016/02/16 PHP
php中文语义分析实现方法示例
2019/09/28 PHP
js获取变量
2006/08/24 Javascript
懒就要懒到底——鼠标自动点击(含时间判断)
2007/02/20 Javascript
jQuery的写法不同导致的兼容性问题的解决方法
2010/07/29 Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
2013/06/06 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
详解Javascript 装载和执行
2014/11/17 Javascript
jquery+CSS实现的水平布局多级网页菜单效果
2015/08/24 Javascript
javascript实现网页端解压并查看zip文件
2015/12/15 Javascript
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
2016/07/14 Javascript
js实现加载更多功能实例
2016/10/27 Javascript
根据Bootstrap Paginator改写的js分页插件
2016/12/25 Javascript
微信小程序 数据封装,参数传值等经验分享
2017/01/09 Javascript
MUI实现上拉加载和下拉刷新效果
2017/06/30 Javascript
详解vue-cli 脚手架项目-package.json
2017/07/04 Javascript
Angular5.1新功能分享
2017/12/21 Javascript
vue-router的HTML5 History 模式设置
2018/09/08 Javascript
@angular前端项目代码优化之构建Api Tree的方法
2018/12/24 Javascript
一文了解Vue中的nextTick
2019/05/06 Javascript
Vue.js的模板语法详解
2020/02/16 Javascript
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
[00:27]DOTA2战队VP、Secret贺新春
2018/02/11 DOTA
Python元组操作实例分析【创建、赋值、更新、删除等】
2017/07/24 Python
Django权限机制实现代码详解
2018/02/05 Python
python简单区块链模拟详解
2019/07/03 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
python 多进程并行编程 ProcessPoolExecutor的实现
2019/10/11 Python
Python如何爬取b站热门视频并导入Excel
2020/08/10 Python
加拿大折扣、优惠券和交易网站:WagJag
2018/02/07 全球购物
美国在线自行车商店:Jenson USA
2018/05/22 全球购物
美国肌肉和力量商店:Muscle & Strength
2019/06/22 全球购物
网上开店必备创业计划书
2014/01/26 职场文书
医务人员自我评价
2014/01/26 职场文书
2014年教研室工作总结
2014/12/06 职场文书
大学生党课感想
2015/08/11 职场文书