js动画之多物体运动

多个物体这不能使用一个定时器了,要给每个物体一个定时器

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>多物体运动</title>
	<style>
    body{margin: 0px;padding: 0px;}
		.animation{
			background-color: green;
            margin: 10px 0px;
            padding: 0px;
			height: 100px;
			width: 100px;
			left: 0px;
			top: 0px;
            position: relative;
		}
	</style>
</head>
<body>
	<div  class="animation">A</div>
    <div  class="animation">B</div>
    <div  class="animation">C</div>
</body>
 <script type="text/javascript">
    window.onload = function(){
    	var ele = document.getElementsByTagName("div"),
            WINDOW_WIDTH = window.innerWidth - 100;
            for (var i = 0; i < ele.length; i++) {
                ele[i].timer = null;
                ele[i].onmouseover = function(){
                    startAnimation(this);
                }
            };

    	function startAnimation(obj){
    		clearInterval(obj.timer);
    		obj.timer = setInterval(function(){
                var _left = obj.offsetLeft,
                    _speed = Math.ceil((WINDOW_WIDTH - _left)/100);

    			if (obj.offsetLeft >= WINDOW_WIDTH){
    				clearInterval(obj.timer);
    			}else{
                    obj.style.left = obj.offsetLeft+ _speed +‘px‘;
                    console.log(obj.style.left);
                    console.log(obj.offsetLeft);
                }

    		},1)
    	}

    }
 </script>
</html>

  这里给每个div加上一个定时器~~ 还要注意的就是给body加上margin:0px;padding:0px;如果不加的话,那么obj.style.left和obj.offsetLeft是不会相等(因为我们这里使用的是相对定位)

时间: 2024-10-12 16:34:01

js动画之多物体运动的相关文章

js动画 Css提供的运动 js提供的运动

1.     动画 (1)      Css样式提供了运动 过渡的属性transition  从一种情况到另一种情况叫过渡 Transition:attr  time  linear  delay: Attr 是变化的属性 Time 是花费的时间 Linear 变化的速度 Delay 是延迟 复习background:url() no-repeat 50% 50% red; Background-image Background-repeat Background-position Backgr

JS动画之缓冲动画与多物体动画即获取样式的方法

一.缓冲动画Ps1:opacity:所有浏览器都支持 opacity 属性.注释:IE8 以及更早的版本支持替代的 filter 属性.例如:filter:Alpha(opacity=50).Ps2:缓冲运动的速度值一定要转换成整数,不然将到达不了终点,是用Math.ceil(),还是Math.floor(),要看就提情况.Ps3:动画大致模版(思路):            window.onload = function(){            var oDiv = document.g

模拟真实物体运动的js动画库插件-Anima

Anima是一款可以同时控制许多对象进行动画的js插件.并且每一个对象都有它们各自的质量和密度以模拟现实生活中的物体. CSS3动画有一些限制,最主要的是你不可以真正完全的控制它们.如果不使用一些技巧的话,你几乎不可能停止动画的过渡. Anima是一个基本的物理基础js动画库框架.你可以通过它很容易的创建现实生活中的物体运动动画.Anima经过压缩后只有5K大小. 在线演示:http://www.htmleaf.com/Demo/201502041327.html 下载地址:http://www

js多个物体运动的问题1

问题2 http://www.cnblogs.com/huaci/p/3854304.html 用js写一个物体的运动很简单.如果一个页面有多个物体在运动,它会不会出问题呢? ok,我们来看一个示例 让多个div变宽 现象:onmouseover时,div宽度变宽:onmouseout时,div恢复原大小 html部分 <div id="div1"></div> <div id="div2"></div> <di

js多个物体运动问题2

问题1 http://www.cnblogs.com/huaci/p/3854216.html 在上一讲问题1,我们可以整理出2点: 1,定时器作为运动物体的属性 2,startMove方法,参数要传递2个:物体,目标值 那么,如果运动物体的属性值改变,是通过一个变量值来改变的话,这时候会有什么问题呢? 示例:多个Div淡入淡出 现象:onmouseover时,透明度降低:onmouseout时,透明度增加 看看它会有什么问题,请看下面代码 html部分: <div id="div1&qu

JS定时器做物体运动

JS定时器是函数 setInterval(函数体/函数名  , 时间) 清楚定时器 clearInterval(函数) 时间单位(毫秒) 1000毫秒  = 1秒 首先我们要知道用JS定时器能干什么?定时器的原理是什么? 我的理解为,定时器是能让一个物体根据规定的时间做规定的移动,而物体运动是怎样的效果呢?你可以理解为一个人走路,要走到某个位置,要走到这个位置肯定是一步步移动才能达到,而不是瞬间就到达的,所以定时器的作用更像是让物体像人一样走到相应的位置 比如: 规定一个横形状方块,其中包裹一个

js 多物体运动框架

多物体运动框架例子:多个Div,鼠标移入biankuan 单定时器,存在问题每个Div一个定时器总结:参数问题:当运动当前的div的时候可以传参数onStart(obj,tag):obj为当前运动的div 调用时用thistag表示运动的终点距离开一个定时器(当三个div一起运动时会卡)所以利用for循环开三个定时器步骤:1.设置定时器 var timer=null:2.关闭定时器clearInterval(obj.timer);3.开启定时器:obj.timer=setInterval(fun

原生js动画效果(源码解析)

在做页面中,多数情况下都会遇到页面上做动画效果,之前一直都是用jquery,一直没有试过用原生的js来做,今天正好看到一篇js原生动画的效果,特记录在此, 原文地址:http://www.it165.net/pro/html/201410/23513.html 1.匀速动画效果 说明:匀速动画就是动画的效果从开始到结束每次执行的速度都是一致的 01.<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www

JS动画之速度动画和透明度变化

一.运动框架实现思路:1.速度(改变值left.right.width.height.opacity)2.缓冲运动3.多物体运动4.任意值变动5.链式运动6.同时运动 二.匀速运动:1.设置定时器,每隔一段时间更改位置,达到匀速运动2.设置定时器前需清除定时器,以防多次触发重复生成多个定时器3.当运动位置达到目标值时,可通过清除定时器停止运动4.当定义函数多处相同时,可封装为一个函数,用不同参数调用,尽量少传递相同的参数        window.onload = function(){