javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)

 更新时间:2015年11月29日 10:12:35   作者:坐观风云  
这篇文章主要介绍了javascript实现网页中涉及的简易运动,比如改变宽高、透明度、位置等,感兴趣的小伙伴们可以参考一下

平时工作中写网页涉及的运动往往都非常简单,比如改变宽高,透明度,位置,是最常用的几种形式,为了省事,整合了下,于是就有了下面这个东东:

兼容: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简易运动有所启发。

相关文章

  • Bootstrap Modal遮罩弹出层(完整版)

    Bootstrap Modal遮罩弹出层(完整版)

    Bootstrap modal是给外层添加固定fixed,然后内容使用自适应靠上居中方式。今天分享的这篇文章正是这种方式,感兴趣的朋友一起看看吧
    2016-11-11
  • JavaScript优化图片懒加载的性能技巧

    JavaScript优化图片懒加载的性能技巧

    前端发展过程中有许多性能优化的操作,比如防抖、节流和图片懒加载等,在这里我们首先聊聊图片懒加载操作,我们会经常逛像淘宝和京东等购物平台,一次性全部加载会导致加载时间长、网络资源消耗大,所以本文给大家介绍了JavaScript优化图片懒加载的性能技巧
    2024-06-06
  • layui关闭层级、简单监听的实例

    layui关闭层级、简单监听的实例

    今天小编就为大家分享一篇layui关闭层级、简单监听的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • js前端面试之同步与异步问题详解

    js前端面试之同步与异步问题详解

    这篇文章主要给大家介绍了关于js前端面试之同步与异步问题的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用js具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • js 连接数据库如何操作数据库中的数据

    js 连接数据库如何操作数据库中的数据

    JS中怎么连接数据库,和提取数据库中的数据,本文将以此问题详细介绍,需要的朋友可以了解下
    2012-11-11
  • 如何利用JS检查元素是否在视口内

    如何利用JS检查元素是否在视口内

    这篇文章主要给大家介绍了关于如何利用JS检查元素是否在视口内的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • JavaScript常见JSON操作实例分析

    JavaScript常见JSON操作实例分析

    这篇文章主要介绍了JavaScript常见JSON操作,简单描述了json的概念、常见json类型,并结合实例形式分析了json的序列化、转换、格式化、解析等相关操作技巧,需要的朋友可以参考下
    2018-08-08
  • JavaScript全排列的六种算法 具体实现

    JavaScript全排列的六种算法 具体实现

    这篇文章介绍了全排列的六种算法有,交换算法,链接算法,回溯算法等,有需要的朋友可以参考一下
    2013-06-06
  • JavaScript实现文本中间缩略的两种方案

    JavaScript实现文本中间缩略的两种方案

    项目中经常会遇到缩略展示文字的场景,即要求文字在一行不换行展示,超出自动展示...,常用的展示效果有两种,文字中间缩略以及文字末尾缩略,本文将通过代码示例给大家详细的讲一下这两种方案,需要的朋友可以参考下
    2024-06-06
  • javascript实现浏览器窗口传递参数的方法

    javascript实现浏览器窗口传递参数的方法

    这篇文章主要介绍了javascript实现浏览器窗口传递参数,需要的朋友可以参考下
    2014-09-09

最新评论