javascript运动框架

时间:2022-08-26 21:30:12

下面这个一个运动框架可以控制元素在一个属性上的运动,同时,可以调用回调函数。

/*
获取元素某个属性的值
@obj: 对象
@attr: 属性值
*/
function getStyle(obj, attr){
if(obj.currentStyle){
return obj.currentStyle[attr];
}
else{
return getComputedStyle(obj, false)[attr];
}
} /*
获取元素某个属性的值
@obj: 对象
@attr: 属性值
@iTarget: 目标值(int)
@fn: 回调函数
*/
function startMove(obj, attr, iTarget, fn){
clearInterval(obj.timer);
obj.timer = setInterval(function(){ if(attr =="opacity"){
var iCur = parseInt(parseFloat(getStyle(obj, attr))*100);
}else{
var iCur = parseInt(getStyle(obj, attr));
} var iSpeed = (iTarget-iCur)/8;
iSpeed = iSpeed>0? Math.ceil(iSpeed): Math.floor(iSpeed); if(iCur == iTarget){
clearInterval(obj.timer); if(fn){
fn();
}
}
else{
if(attr == "opacity"){
obj.style.filter = 'alpha(opacity:' + (iCur + iSpeed)+ ')';
obj.style.opacity = (iCur + iSpeed)/100;
}else{
obj.style[attr] = iCur + iSpeed + 'px';
} }
}, 30);
}

上面这个运动框架存在不足:它只能给一个属性设置动画,下面这个运动框架通过json来实现给多个属性同时设置动画:

/*
获取元素某个属性的值
@obj: 对象
@attr: 属性值
*/
function getStyle(obj, attr){
if(obj.currentStyle){
return obj.currentStyle[attr];
}
else{
return getComputedStyle(obj, false)[attr];
}
} /*
获取元素某个属性的值
@obj: 对象
@json: {属性值1:目标值1,属性值2:目标值2,...}
@fn: 回调函数
*/
function startMove(obj, json, fn){
clearInterval(obj.timer);
obj.timer = setInterval(function(){
var bStop = true; //运动结束标致
for(var attr in json){ //1.取当前值
iCur = 0;
if(attr =="opacity"){
var iCur = parseInt(parseFloat(getStyle(obj, attr))*100);
}else{
var iCur = parseInt(getStyle(obj, attr));
} //2.算速度
var iSpeed = (json[attr]-iCur)/8;
iSpeed = iSpeed>0? Math.ceil(iSpeed): Math.floor(iSpeed); //3.检查停止
if(iCur != json[attr]){
bStop = false;
} if(attr == "opacity"){
obj.style.filter = 'alpha(opacity:' + (iCur + iSpeed)+ ')';
obj.style.opacity = (iCur + iSpeed)/100;
}else{
obj.style[attr] = iCur + iSpeed + 'px';
}
}
if(bStop){
clearInterval(obj.timer);
if (fn) {
fn();
};
} }, 30);
}

弹性运动:

var iSpeed = 0;
var left = 0; function startMove(obj, iTarget){ clearInterval(obj.timer) obj.timer = setInterval(function(){
iSpeed+=(iTarget - obj.offsetLeft)/5;
iSpeed*=0.7; left +=iSpeed; if(Math.abs(iSpeed)<1 && Math.abs(left - iTarget)<1){
clearInterval(obj.timer);
obj.style.left = iTarget + 'px';
}else{
obj.style.left = left + 'px';
} }, 30);
}

弹性运动运用的范围有限,一般用于菜单的选择特效:带有滑块的导航条

javascript运动框架的更多相关文章

  1. javascript运动框架(三)

    迟到了好几天,不好意思哈!继续来优化一下javascript运动框架的代码.之前的代码存在bug,当重复点击时速度会加快,那么怎么解决这个bug呢? 现在我们就来解决一下,其实很简单,在开始运动时,关 ...

  2. 好程序员技术教程分享JavaScript运动框架

    好程序员技术教程分享JavaScript运动框架,有需要的朋友可以参考下. JavaScript的运动,即让某元素的某些属性由一个值变到另一个值的过程.如让div的width属性由200px变到400 ...

  3. 【repost】JavaScript运动框架之速度时间版本

    一.JavaScript运动框架之速度版 1.1 运动框架的实现思路 运动,其实就是在一段时间内改变 left . right . width . height . opactiy 的值,到达目的地之 ...

  4. 【原生JS组件】javascript 运动框架

    大家都知道JQuerry有animate方法来给DOM元素进行运动,CSS3中也有transition.transform来进行运动.而使用原生的Javascript来控制元素运动,须要写非常多运动的 ...

  5. JavaScript 运动框架 Step by step(转)

    1,运动原理 Js运动,本质来说,就是让 web 上 DOM 元素动起来.而想要 DOM 动起来,改变其自身的位置属性,比如高宽,左边距,上边距,透明度等.动画的原理就是把不同状态的物体,串成连续的样 ...

  6. javaScript运动框架之匀速运动

    运动框架 1.在开始运动时,关闭已有定时器 2.把运动和停止隔开(if/else) 匀速运动的停止条件 运动终止条件:距离足够近 Demo代码 <!DOCTYPE html> <ht ...

  7. JavaScript 运动框架

    <script> window.onload=function (){ var oDiv=document.getElementById("div1"); oDiv.o ...

  8. javascript运动框架(二)

    紧接着上面写的... 给div加一个边框,border:1px solid black window.onload = function(){      var div = document.getE ...

  9. 适用于CSS2的各种运动的javascript运动框架

    <script> window.onload = function() { //var oDiv1 = document.getElementById('box1'); //var oDi ...

随机推荐

  1. C语言与java 20155317 王新玮第二次

    20155317 王新玮第二次写作感想   你有什么技能比大多数人(超过90%以上)更好? 刚刚看到这个题目,我的首先想到的是会一些中医,懂得中医的理论框架知识,懂得大部分的中医脉象,能够解决日常生活 ...

  2. Could not find Developer Disk Image

    测试机系统版本 iOS9.3,而Xcode7.2不支持 iOS9.3的真机测试,由于升级 Xcode 版本太慢,又急着看效果,怎么办呢?没事儿,只要找得到原因的问题就不是问题,现附上解决办法: 1)c ...

  3. 【原】iOS学习18之OC内存管理高级

    1.属性的内存管理 1> 属性的语义特性 2> assign下的属性内部实现 @property (nonatomic, assign) NSString *name; @synthesi ...

  4. 【sinatra】结合Padrino framework

    用Sinatra来做复杂的Web应用时,会出现若干个比较麻烦的点. 要手工作成一个个的应用骨架.作成test .view.public目录等等 将Sinatra DSL集中在一个类中的话,画面数量增加 ...

  5. avi 格式详解

    http://blog.csdn.net/becomly/article/details/6283004 http://blog.csdn.net/easecom/article/details/45 ...

  6. aliyun硬盘挂载

    实在难以忍受公司服务器的网络问题,停用了半年的aliyun服务器今天终于决定启用了. 购买的时候是40G的硬盘空间,首先查了一硬盘情况结果发现有一个分区居然没有挂载.  第一步是创建一个分区 输入命令 ...

  7. dns缓存刷新时间是多久&quest;dns本地缓存时间介绍

    原文: http://www.winwin7.com/JC/4742.html dns缓存刷新时间是多久?一般来说,我们只知道DNS解析是互联网绝大多数应用的实际寻址方式,在我们打开某站点,DNS返回 ...

  8. &lbrack;翻译&rsqb;Spring MVC RESTFul Web Service CRUD 例子

    Spring MVC RESTFul Web Service CRUD 例子 本文主要翻译自:http://memorynotfound.com/spring-mvc-restful-web-serv ...

  9. Spark2&period;0 特征提取、转换、选择之二:特征选择、文本处理,以中文自然语言处理&lpar;情感分类&rpar;为例

    特征选择 RFormula RFormula是一个很方便,也很强大的Feature选择(*组合的)工具. 输入string 进行独热编码(见下面例子country) 输入数值型转换为double(见 ...

  10. CFD

                                                        Were  it free , it would Soar , cloud Sky. 1. 明显 ...