(42)JS运动之多物体框架--多个div变宽

如果只为div添加一个定时器的话,在多个div变宽的时候会发生问题,但是如果为每个div添加一个定时器,那么就可以实现多个物体变宽。注意:在多物体运动的情况下,所有东西不能共用。offsetXXX会跟border冲突导致不能得到想要的结果,在这里可以用getStyle()函数代替。

function getStyle(obj, name)
{
	if(obj.currentStyle)
	{
		return obj.currentStyle[name];
	}
	else
	{
		return getComputedStyle(obj, false)[name];
	}
}
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
div{
	width:100px;
	height:50px;
	background:red;
	margin:10px;
}

</style>

<script>

window.onload=function (){
	var aDiv=document.getElementsByTagName('div');
	for(var i=0;i<aDiv.length;i++)
	{
		aDiv[i].timer=null;//自定义属性,加一个定时器
		aDiv[i].onmouseover=function ()
		{
			startMove(this,400);
		};
		aDiv[i].onmouseout=function ()
		{
			startMove(this,100);
		};
	}
};

var timer=null;
function startMove(obj, iTarget)
{
	clearInterval(obj.timer);
	obj.timer=setInterval(function (){
		var speed=(iTarget-obj.offsetWidth)/6;
		speed=speed>0?Math.ceil(speed):Math.floor(speed);

		if(obj.offsetWidth==iTarget)
		{
			clearInterval(obj.timer);
		}
		else
		{
			obj.style.width=obj.offsetWidth+speed+'px';
		}
	}, 30);
}

</script>
</head>
<body  >
     <div ></div>
     <div ></div>
     <div ></div>  

</body>
</html>

效果图:

(42)JS运动之多物体框架--多个div变宽

时间: 2024-10-25 17:02:27

(42)JS运动之多物体框架--多个div变宽的相关文章

(36)JS运动之使物体向右运动

基本思路:样式要是绝对定位,不然的话根本走不起来,当开启一个定时器的时候,必须先清除定时器,这是为了防止鼠标连续点击按钮而开启多个定时器,导致物体的速度加快等原因,其次要控制好物体的运动和停止,用if-else控制逻辑控制. <!DOCTYPE HTML> <!-- --> <html> <head> <meta charset="utf-8"> <title></title> <style>

JS运动-放大缩小物体(从中心)

先来看下效果: 要点: 1. 将css的float定位,转换成用js的绝对定位 2. 从中心放大缩小物体 主要步骤: 1. 先通过css的float定位,ul宽度设置成li宽的倍数(例子中li的宽是122,没行显示3 个li,所以ul宽设置        成366) 2.  利用js 获取并且设置他们初始的left 和top值 3.  ul 的position:relative相对定位,接着用js循环设置li的position:absolute绝对定位 4.  加入鼠标移入移出事件,并通过运动框

JS运动学习笔记 -- 任意值的运动框架(高/宽度,背景颜色,文本内容,透明度等)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>任意值的运动框架</title> <style> div { float: left; width: 200px; height: 200px; margin: 20px; background-color: yellow; border: 1p

JavaScript学习总结【11】、JS运动

动画效果在网站中是一种非常常见的交互式体验效果,比如侧边栏分享.图片淡入淡出,我们把这种动画效果就叫做运动,也就是让物体动起来.如果想让一个物体动起来,无非就是改变它的速度,也就是改变属性值,比如 left.right.width.height.opacity ,那么既然是运动,就可以分为很多种,如匀速运动.缓冲运动.多物体运动.任意值运动.链式运动和同时运动.我们从最简单的动画开始,如何让单个物体运动,逐步深入多物体运动.多动画同时运动到实现完美运动框架的封装,在这个过程中,每一个运动都封装为

第九节 JS运动应用

多物体运动框架 多个物体同时运动 例子:多个Div,鼠标移入变宽 单定时器,存在问题 每个Div一个定时器 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>多个div变宽</title> <style> div{ width: 100px; height: 50px; background:

“多物体变宽”页面特效

功能描述: 页面中存在多个div,鼠标移入某一个div,则该div变宽,移出则恢复原状. 实现效果: 编码思路: 给各个div绑定鼠标移入,移出事件,并设置独立的定时器. 套用运动框架改变div的width. 示例代码:

js运动框架逐渐递进版

运动,其实就是在一段时间内改变left.right.width.height.opactiy的值,到达目的地之后停止. 现在按照以下步骤来进行我们的运动框架的封装: 匀速运动. 缓冲运动. 多物体运动. 任意值变化. 链式运动. 同时运动 (第一部分):匀速运动 运动基础 思考:如何让div动起来?如下: 设置元素为绝对定位,只有绝对定位后,left,top等值才生效. 定时器的使用(动态改变值),这里使用setInterval()每隔指定的时间执行代码. 计时器setInterval(函数,交

带无缝滚动的轮播图(含JS运动框架)

今天学习了一下轮播图的写作,想到前一阵学过的无缝滚动得思想,所以就把轮播与滚动结合了一下.不过我的代码的神逻辑我自己都不敢恭维,在没网没参照的情况下,只能硬着头皮往下写,希望跟大家共勉吧. js运动框架的代码如下: 1 //获取样式 2 function getStyle(obj,attr){ 3 if(obj.currentStyle){ 4 return obj.currentStyle[attr]; 5 }else{ 6 return getComputedStyle(obj,false)

js运动框架完成块的宽高透明度及颜色的渐变

了解了运动框架完成块元素的宽高和透明度的变化的原理,我想着写一个颜色的变化来练习一下,不想写了很长时间才写出来,跟各位分享一下. 颜色的变化是通过三元素渐变的方式完成的,通过构造json,使当前的颜色与目标颜色进行对比,实现渐变的过程. 代码如下: 1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title>