<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. CodeManage 源代码管理器v2.0发布

    下载地址 欢迎大家提出宝贵的意见和bug

  2. SqlBulkCopy的一个例子

    public bool InsertAll(IList<NewStockLuoPan> list) { DataTable dt = new DataTable(); dt.Columns ...

  3. Git远程使用技巧

    git作为强大的版本管理软件,已经得到了广泛的应用,很多人对于本地的git操作已经非常熟悉了.然而有的时候,我们也需要一个远程的,类似云的仓库来存储我们的一些代码.github给予了我们不限量的空间来 ...

  4. VPN错误789:L2TP连接尝试失败

    VPN 错误789:l2tp 连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到一个处理错误 Windows配置VPN,选择“使用IPsec的第2层隧道协议(L2TP/IPSec)”时, XP系 ...

  5. cxf的使用及安全校验-01创建简单的服务端接口

    最近因为项目的需要,研究了一下webservice的使用: 这里以cxf2.7.0为例,大致介绍一下,也用于备份啦(张立胜) 大致介绍一下项目的情况:项目有maven管理,webservice调用的方 ...

  6. (二)CSS3应用 - 实现圆角

    html <link href="test.css" type="text/css" rel="stylesheet" /> & ...

  7. OpenGL ES 2.0 光照

    基本的光照 光照分成了3种组成元素(3个通道):环境光.散射光以及镜面光. 材质的反射系数实际指的就是物体被照射处的颜色,散射光强度指的是散射光中的RGB(红.绿.蓝)3个色彩通道的强度. 环境光 指 ...

  8. 数据画图 jpgraph & chart.js

    今天想到要研究下“用图表的形式来呈现数据”这个主题.对比了下两种实现的方法: 方法一:通过php代码在服务器端生成图像,再将图像传回客户端.使用jpGraph类库. 方法二:通过js和html5技术, ...

  9. Json.Net从4.0升级到7.0带来的问题

    1.由于被迫Json.Net升级,导致了我们一部分查询出来数据 2.分析原因result = JsonConvert.DeserializeObject(inputContent, JsonDataT ...

  10. Office2007设置无格式粘贴

    打开Word 2007,按Alt+F11.这时会出现一个Visual Basic编辑窗口.如图所示:   上图中左上方,鼠标右击Normal→插入→模块,出现下图:     双击"模块1&q ...