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

 1    <script>
 2     window.onload = function() {
 3             //var oDiv1 = document.getElementById(‘box1‘);
 4             //var oDiv2 = document.getElementById(‘box2‘);
 5             // oDiv1.timer = null;
 6             var oDiv = document.getElementsByTagName(‘div‘);
 7
 8             for (var i = 0; i < oDiv.length; i++) {
 9                 oDiv[i].timer = null;
10                 oDiv[i].onmouseover = function() {
11                     var that = this;                                    //闭包的关系,把this传递过去
12                     startMove(this, {‘width‘: 205, ‘height‘: 500},function(){
13                         startMove(that, {‘opacity‘: 100});
14                     });
15                     //alert(getStyle(this,‘opacity‘))
16                 }
17                 oDiv[i].onmouseout = function() {
18                     var that = this;
19                     startMove(this, {‘width‘: 200,‘height‘:200}, function(){
20                         startMove(that, {‘opacity‘: 30});
21                     });
22                 }
23             }
24         }
25         //var timer = null;
26     function getStyle(obj,name){          //获取样式的函数
27         if(obj.currentStyle){
28             return obj.currentStyle[name];    //这里用这种形式的原因是name是以字符串的形式传递过来的
29         } else{
30             return getComputedStyle(obj,false)[name];       //得到加上边框的总宽
31         }
32     }
33     //startMove(onj,{width: 200, height: 200}, fnEnd)
34     function startMove(obj, json, fnEnd) {
35         clearInterval(obj.timer);
36         obj.timer = setInterval(function() {
37             var bStop = true;                   //开了定时器之后设立一个假设:所有运动都停止了,那些把假设设到定时器外面的都是错误的方法
38             for(var attr in json){
39             var cur = 0;
40             if(attr == "opacity"){
41                 cur = Math.round(parseFloat(getStyle(obj,attr)) * 100);     //要取整
42             } else {
43                 cur = parseInt(getStyle(obj,attr))
44             }
45             var speed = (json[attr] - cur) / 10; //
46             speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
47             if (cur !== json[attr]) {               //如果某次循环的值不等于目标值,
48                 bStop = false;                          //假设不成立
49             };
50                 if (attr == "opacity"){
51                 obj.style.opacity = (speed + cur)/100;
52                 obj.style.filter = ‘alpha(opacity:‘+ (speed + cur) +‘)‘;
53                 } else{
54                     obj.style[attr] = cur + speed + ‘px‘;
55                 }
56         }
57         if(bStop){                                          //所有的假设都成立了,才关闭定时器
58             clearInterval(obj.timer);
59             if(fnEnd) fnEnd();                              //如果有回调函数,则执行回掉函数
60         }
61         }, 30)
62     }
63     </script>

html代码

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

css代码

1  div {
2         width: 200px;
3         height: 200px;
4         background: purple;
5         border: 10px solid maroon;
6         margin-top: 10px;
7         opacity: 0.3;
8         filter: alpha(opacity: 30);
9     }

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

时间: 2024-10-29 05:07:28

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

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

原生JavaScript运动功能系列(一):运动功能剖析与匀速运动实现 原生JavaScript运动功能系列(二):缓冲运动 原生JavaScript运动功能系列(三):多物体多值运动 原生JavaScript运动功能系列(四):多物体多值链式运动 这篇博客剖析一个问题,就是怎么实现将元素指定时间运动到目标位置?前面的博客都是在处理运动行为,没有对运动时间做任何限定,只是因为清晰的分析运动行为和实现原理,要想一个动画函数具备健全的功能,并且可以随意使用,通过参数设定动画执行时间是非常有必要的一个

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

一.JavaScript运动框架之速度版 1.1 运动框架的实现思路 运动,其实就是在一段时间内改变 left . right . width . height . opactiy 的值,到达目的地之后停止 位移 top,left 折叠 width,height 淡入淡出 opacity 时间有关系 setInterval setTimeout 用javascript直接获取行间样式很容易,但如果要获取非行间样式那我们只能借助函数了.我这里编写了一个名为getStyle的函数,专门处理取非行间的

javascript运动详解

javascript运动详解 本文给大家详细介绍下如何使用javascript来实现运动效果,总结的十分全面,附上各种效果的详细示例和演示图,有需要的小伙伴可以参考下. 物体运动原理:通过改变物体的位置,而发生移动变化. 方法: 1.运动的物体使用绝对定位 2.通过改变定位物体的属性(left.right.top.bottom)值来使物体移动.例如向右或左移动可以使用offsetLeft(offsetRight)来控制左右移动. 步骤: 1.开始运动前,先清除已有定时器 (因为:是连续点击按钮,

转 JavaScript 运动框架 Step by step

1,运动原理 Js运动,本质来说,就是让 web 上 DOM 元素动起来.而想要 DOM 动起来,改变其自身的位置属性,比如高宽,左边距,上边距,透明度等.动画的原理就是把不同状态的物体,串成连续的样子,就像一本书,画了几个小人,然后 一翻书,就看见小人在动.js动画也一样.不同状态的DOM,用定时器控制,就能得到动画效果. [javascript] view plain copy window.onload = function(){ var oBtn = document.getElemen

javascript运动系列第一篇——运动函数

× 目录 [1]简单运动 [2]定时器管理 [3]分享到效果[4]移入移出[5]运动函数[6]透明度[7]多值[8]多物体 前面的话 除了拖拽以外,运动也是javascript动画的一个基本操作.通过CSS属性transition和animation可以实现运动.但是,要进行更精细地操作,javascript运动是必不可少的.本文将详细介绍javascript运动 简单运动 让一个元素在页面中运动起来很简单,设置定时器,改变定位元素的left或top值即可 <button id="btn&

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

大家都知道JQuerry有animate方法来给DOM元素进行运动,CSS3中也有transition.transform来进行运动.而使用原生的Javascript来控制元素运动,需要写很多运动的细节以及兼容. 然而,当你的BOSS不让你使用庞大的JQ框架,而且你开发的产品也需要在一些不兼容CSS3的浏览器运行的时候,你是否觉得每次都要开个定时器来琢磨运动该怎么进行,是件很费力的事情呢? 那么福利来了,笔者最近总结了两个常用的运动框架,并将其写成组件, 只要按照下面的方法调用,即可方便使用.

javascript运动系列第三篇——曲线运动

× 目录 [1]圆周运动 [2]钟摆运动 [3]抛物线运动 前面的话 上一篇介绍了变速运动,但只实现了直线运动.如果元素的left和top同时运动,并遵循不同的曲线公式,则会进行不同形式的曲线运动.本文将详细介绍圆周运动.钟摆运动和抛物线运动这三种曲线运动形式 圆周运动 圆周运动可能是最好理解的曲线运动了 若(x0,y0)为圆心,则圆的公式为(x-x0)*(x-x0) + (y-y0)*(y-y0) = r*r 写成三角函数的形式为 x = x0 + cosa*r y = y0 + sina*r

JavaScript 运动框架(介绍及原理)

1,运动原理 Js运动,本质来说,就是让 web 上 DOM 元素动起来.而想要 DOM 动起来,改变其自身的位置属性,比如高宽,左边距,上边距,透明度等.动画的原理就是把不同状态的物体,串成连续的样子,就像一本书,画了几个小人,然后一翻书,就看见小人在动.js动画也一样.不同状态的DOM,用定时器控制,就能得到动画效果. 1 window.onload = function(){ 2 var oBtn = document.getElementById('btn'); 3 oBtn.oncli

u3d 逐个点运动,路径运动。 U3d one by one, path motion.

u3d 逐个点运动,路径运动. U3d one by one, path motion. 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:[email protected] E-mail: 313134555 @qq.com 逐个点运动,路径运动. I'm going to do some motion and path. 如果是动态增加,就不要用数组,用list.这种.动态增加.点击一个点,加入列表. If it's a dynamic increase, don't u