<script>
window.onload = function() {
//var oDiv1 = document.getElementById('box1');
//var oDiv2 = document.getElementById('box2');
// oDiv1.timer = null;
var oDiv = document.getElementsByTagName('div'); for (var i = 0; i < oDiv.length; i++) {
oDiv[i].timer = null;
oDiv[i].onmouseover = function() {
var that = this; //闭包的关系,把this传递过去
startMove(this, {'width': 205, 'height': 500},function(){
startMove(that, {'opacity': 100});
});
//alert(getStyle(this,'opacity'))
}
oDiv[i].onmouseout = function() {
var that = this;
startMove(this, {'width': 200,'height':200}, function(){
startMove(that, {'opacity': 30});
});
}
}
}
//var timer = null;
function getStyle(obj,name){          //获取样式的函数
if(obj.currentStyle){
return obj.currentStyle[name]; //这里用这种形式的原因是name是以字符串的形式传递过来的
} else{
return getComputedStyle(obj,false)[name]; //得到加上边框的总宽
}
}
//startMove(onj,{width: 200, height: 200}, fnEnd)
function startMove(obj, json, fnEnd) {
clearInterval(obj.timer);
obj.timer = setInterval(function() {
var bStop = true; //开了定时器之后设立一个假设:所有运动都停止了,那些把假设设到定时器外面的都是错误的方法
for(var attr in json){
var cur = 0;
if(attr == "opacity"){
cur = Math.round(parseFloat(getStyle(obj,attr)) * 100); //要取整
} else {
cur = parseInt(getStyle(obj,attr))
}
var speed = (json[attr] - cur) / 10; //
speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
if (cur !== json[attr]) { //如果某次循环的值不等于目标值,
bStop = false; //假设不成立
};
if (attr == "opacity"){
obj.style.opacity = (speed + cur)/100;
obj.style.filter = 'alpha(opacity:'+ (speed + cur) +')';
} else{
obj.style[attr] = cur + speed + 'px';
}
}
if(bStop){ //所有的假设都成立了,才关闭定时器
clearInterval(obj.timer);
if(fnEnd) fnEnd(); //如果有回调函数,则执行回掉函数
}
}, 30)
}
</script>

html代码

  <div id="box1"></div>
<div id="box2"></div>

css代码

  div {
width: 200px;
height: 200px;
background: purple;
border: 10px solid maroon;
margin-top: 10px;
opacity: 0.3;
filter: alpha(opacity: 30);
}

全手打,亲测可用,支持多物体,多属性,链式,同时运动。

适用于CSS2的各种运动的javascript运动框架的更多相关文章

  1. 原生JavaScript运动功能系列(五):定时定点运动

    原生JavaScript运动功能系列(一):运动功能剖析与匀速运动实现 原生JavaScript运动功能系列(二):缓冲运动 原生JavaScript运动功能系列(三):多物体多值运动 原生JavaS ...

  2. 原生JavaScript运动功能系列(四):多物体多值链式运动

    原生JavaScript运动功能系列(一):运动功能剖析与匀速运动实现 原生JavaScript运动功能系列(二):缓冲运动 原生JavaScript运动功能系列(三):多物体多值运动 多物体多值链式 ...

  3. javascript运动系列第一篇——匀速运动

    × 目录 [1]简单运动 [2]定时器管理 [3]分享到效果[4]移入移出[5]运动函数[6]透明度[7]多值[8]多物体[9]回调[10]函数完善[11]最终函数 前面的话 除了拖拽以外,运动也是j ...

  4. javascript运动系列第二篇——变速运动

    × 目录 [1]准备工作 [2]加速运动 [3]重力运动[4]减速运动[5]缓冲运动[6]加减速运动[7]往复运动[8]变速函数 前面的话 前面介绍过匀速运动的实现及注意事项,本文在匀速运动的基础上, ...

  5. Popmotion – 小巧,灵活的 JavaScript 运动引擎

    Popmotion 是一个只有12KB的 JavaScript 运动引擎,可以用来实现动画,物理效果和输入跟踪.原生的DOM支持:CSS,SVG,SVG路径和DOM属性的支持,开箱即用.Popmoti ...

  6. javascript运动框架(三)

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

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

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

  8. 原生JavaScript运动功能系列(二):缓冲运动

    匀速运动实现回顾 缓冲运动剖析 示例实现 方法提取 匀速运动实现回顾及缓冲运动剖析: 在这个系列的上一篇博客中原生JavaScript运动功能系列(一):运动功能剖析与匀速运动实现就运动的核心功能组成 ...

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

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

随机推荐

  1. c#利用VM_COPYDATA实现进程间通信

    c#进程间的通信方式很多种,只会这种,感觉比较简单.不懂原理,能用就行. 假设有两个程序:server(主进程),client(子进程) 1.server端: /*定义一个结构体,用来接收从子进程传过 ...

  2. Android AsyncTask学习

    Android程序有UI进程和后台进程,在执行一些耗时的操作时,如果在UI进程中,很可能出现假死的情况,用户体验会受到影响,因此,那些耗时进程往往就放在了后台进程中,用户体验能更好一些.网络情况不稳定 ...

  3. UITableView 属性集合

    UITableView-------表视图--继承UIScrollView并遵守NSCoding协议 属性 frame-------------设置控件的位置和大小 backgroundColor-- ...

  4. CSS书写规范、顺序和命名规则

    写了这么久的CSS,但大部分前端er都没有按照良好的CSS书写规范来写CSS代码,这样会影响代码的阅读体验,这里总结一个CSS书写规范.CSS书写顺序供大家参考   这些是参考了国外一些文章以及我的个 ...

  5. show,hide与fadeIn、fadeOu的区别

    show,hide——>是通过改变height,width,opacity来实现动画的显示与隐藏的 fadeIn.fadeOut——>只通过opacity来实现动画的显示与隐藏的 它们两个 ...

  6. [转]详解AppDelegate/UIApplication

    一.UIApplication 1.简单介绍 (1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序. (2)每一个应用都有自己的UIApplica ...

  7. 什么是dtd文件,为什么需要dtd

    DTD为英文Document Type Definition,中文意思为"文档类定义".DTD肩负着两重任务:一方面它帮助你编写合法的代码,另一方面它让浏览器正确地显示器代码.也许 ...

  8. js各种进制数之间的转换

    计算机中常用的进制数有二进制.八进制.十进制.十六进制 一.十进制 to 其他 var x = 10; // 或定义其他值均可 x.toString(n); // n 代表要转换到的进制,比如n可以为 ...

  9. PowerShell_零基础自学课程_8_高级主题:WMI对象和COM组件

    本系列文章从最初的初识开始,基本上可以完成一些简单的系统管理了,为了更方便的管理系统,同时为了更好的发掘系统的性能,就需要用到系统提供 的一些高级特性,在Windows Server系列的OS中,如果 ...

  10. InnoSetup中枚举出INI文件的所有sections和键值

    原文 http://blog.chinaunix.net/uid-23480430-id-3016899.html InnoSetup支持一些INI文件操作函数, 例如GetIniString,Ini ...