javascript实现的运动框架详解

javascript实现的运动框架详解:

所谓的运动框架简单的说就是让元素的某一个属性值能够有渐进性的变化。运动框架的使用在实际功能中有大量的应用,最常见的比如客服系统,当拖动滚动条的时候,一般客服系统能够以弹性方式跟随,下面就简单介绍一下如何实现此效果:

代码实例如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.51texiao.cn/" />
<title>蚂蚁部落</title>
<style type="text/css">
#mytest
{
  width:100px;
  height:100px;
  background-color:black;
}
</style>
<script type="text/javascript">
function Move(obj,attr,iTarget)
{
  clearInterval(obj.timer);
  obj.timer=setInterval(function()
  {
    var cur=0;
    if(attr=="opacity")
    {
      if(‘v‘ == ‘\v‘)
      {
        cur=parseInt(getStyle(obj,attr));
      }
     else
     {
        cur=Math.round(parseFloat(getStyle(obj,attr))*100);
     }
   }
   else
   {
      cur=parseInt(getStyle(obj,attr));
   }

   var speed=(iTarget-cur)/10;
   speed=speed>0?Math.ceil(speed):Math.floor(speed);

   if(iTarget==cur)
   {
      clearInterval(obj.timer);
   }
   else
   {
      cur+=speed;
      if(attr=="opacity")
     {
        obj.style.filter="alpha(opacity:"+cur+")"; //for IE
        obj.style.opacity=cur/100;   //for FF
      }
     else
     {
        obj.style[attr]=cur+"px";
      }
    }
  },30);
}

function getStyle(obj,name)
{
  if(obj.currentStyle)
  {
    return obj.currentStyle[name];//for IE
  }
  else
  {
    return getComputedStyle(obj,false)[name];//for FF
  }
}

window.onload=function()
{
  var mytest=document.getElementById("mytest");
  Move(mytest,"width",200);
}
</script>
</head>
<body>
<div id="mytest">蚂蚁部落欢迎您</div>
</body>
</html>

在以上代码可以以缓冲的形式将div的宽度设置为200px。当然是用move函数几乎可以设置一个元素的任何属性。下面简单解释要一下如何实现此效果:

一.实现原理:

原来非常的简单,通过定时器函数setInterval()不断的调用一个函数以实现不间断的以不同的速度改变元素的属性值,最后达预定属性值。这样就实现了缓冲效果。

二.代码注释:

1.function Move(obj,attr,iTarget){},声明一个函数,此函数实现了运动框架效果,此函数具有三个参数,obj是要操作的对象,attr表示要操作的属性值例如"width",iTarget表示要达到的目标属性值。

2.clearInterval(obj.timer),作用是关闭上一个上一个定时器,可以防止对对同一个元素同时使用多个定时器。

3.obj.timer=setInterval(function(){},1000),定时器反复调用函数。

4.var cur=0,用来存储当前属性的值。

5.if(attr=="opacity"),判断要操作的属性是否是透明度。

6.if(‘v‘ == ‘\v‘){},由于IE8和IE8以下浏览器对透明度的处理和其他标准浏览器不一样,所以这里需要进行判断。

7. cur=Math.round(parseFloat(getStyle(obj,attr))*100),针对在FF中opacity属性值为浮点数值问题,将属性值 四舍五入、转换成浮点型。乘以100,使opacity属性值与IE统一为百分数。

8.var speed=(iTarget-cur)/10,创建递减的速度speed变量。实现属性值的变速改变。

9.speed=speed>0?Math.ceil(speed):Math.floor(speed),取整,解决浏览器忽略小于1px的数值 导致运动结束时,离目标值Itarget少几个像素的问题。

10.if(iTarget==cur){}如果达到指定属性值,就停止定时器。

11.cur+=speed,属性值递增。

12.if(attr=="opacity"){},透明度关于不同浏览器的兼容为。

13.function getStyle(obj,name){},获取指定兑现的执行属性的属性值。

原文地址是:http://www.51texiao.cn/javascriptjiaocheng/2015/0507/886.html

最原始地址是:http://www.softwhy.com/forum.php?mod=viewthread&tid=8100

时间: 2024-10-26 17:21:14

javascript实现的运动框架详解的相关文章

jQuery Validate验证框架详解

jQuery校验官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation 一.导入js库 <script type="text/javascript" src="<%=path %>/validate/jquery-1.6.2.min.js"></script> <script type="text/javascript" src

【转】jQuery Validate验证框架详解

jQuery校验官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation 一.导入js库 <script type="text/javascript" src="<%=path %>/validate/jquery-1.6.2.min.js"></script> <script type="text/javascript" src

jQuery Validate验证框架详解(转)

jQuery校验官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation 一.导入js库 <script type="text/javascript" src="<%=path %>/validate/jquery-1.6.2.min.js"></script> <script type="text/javascript" src

JavaScript 身份证号有效验证详解及实例代码

JavaScript 身份证号有效验证详解及实例代码 这篇文章主要介绍了JavaScript 身份证号有效验证详解及实例代码的相关资料,需要的朋友可以参考下 JavaScript验证身份证号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 <%@ page language="jav

MTK平台LCD驱动框架详解(一)

许多学习嵌入式的进入MTK开发平台,很多东西都会感到很陌生.在MTK平台上你可以简简单单几分钟就点亮一块屏.加上MTK快速开发的节奏,也很少有时间自己整理学习.如果不思进取,不加班加点学习.很容易就慢慢--.这也难怪有些人说MTK造就了一批懒人,毁掉了一批工程师.但其实都是基于linux开发,核心的东西都是一样一样的.我刚入行业,在迷茫之际,自己整理跟踪源码.想慢慢找回自己熟悉的感觉,掌握MTK的整体框架.也希望能给有需要的人带来些帮助.好吧!前话说到这,开始正题. 本文肯定有不少地方会出现错误

hadoop 学习笔记:mapreduce框架详解

hadoop 学习笔记:mapreduce框架详解 开始聊mapreduce,mapreduce是hadoop的计算框架,我 学hadoop是从hive开始入手,再到hdfs,当我学习hdfs时候,就感觉到hdfs和mapreduce关系的紧密.这个可能是我做技术研究的 思路有关,我开始学习某一套技术总是想着这套技术到底能干什么,只有当我真正理解了这套技术解决了什么问题时候,我后续的学习就能逐步的加快,而学习 hdfs时候我就发现,要理解hadoop框架的意义,hdfs和mapreduce是密不

iOS 开发之照片框架详解之二 —— PhotoKit 详解(下)

这里接着前文<iOS 开发之照片框架详解之二 —— PhotoKit 详解(上)>,主要是干货环节,列举了如何基于 PhotoKit 与 AlAssetLibrary 封装出通用的方法. 三. 常用方法的封装 虽然 PhotoKit 的功能强大很多,但基于兼容 iOS 8.0 以下版本的考虑,暂时可能仍无法抛弃 ALAssetLibrary,这时候一个比较好的方案是基于 ALAssetLibrary 和 PhotoKit 封装出一系列模拟系统 Asset 类的自定义类,然后在其中封装好兼容 A

iOS 开发之照片框架详解之二 —— PhotoKit 详解(上)

一. 概况 本文接着 iOS 开发之照片框架详解,侧重介绍在前文中简单介绍过的 PhotoKit 及其与 ALAssetLibrary 的差异,以及如何基于 PhotoKit 与 AlAssetLibrary 封装出通用的方法. 这里引用一下前文中对 PhotoKit 基本构成的介绍: PHAsset: 代表照片库中的一个资源,跟 ALAsset 类似,通过 PHAsset 可以获取和保存资源 PHFetchOptions: 获取资源时的参数,可以传 nil,即使用系统默认值 PHAssetCo

[转] 从此不再惧怕URI编码:JavaScript及C# URI编码详解

混乱的URI编码 JavaScript中编码有三种方法:escape.encodeURI.encodeURIComponent C#中编码主要方法:HttpUtility.UrlEncode.Server.UrlEncode.Uri.EscapeUriString.Uri.EscapeDataString JavaScript中的还好,只提供了三个,C#中主要用的就有这么多,还没有列出其他编码(HTML),一多就弄不明白,弄不明白就心生恐惧,心生恐惧就变得苦逼,本文就向大家详细解释在JavaSc