<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body,div{
margin: 0px;
padding: 0px;
}
div{
width:200px;
height: 200px;
background: red;
margin:10px;
float: left;
opacity: 0.3;
}
</style>
<script type="text/javascript">
window.onload=function(){
var oDiv= document.getElementsByTagName('div');
for (var i=0;i<oDiv.length;i++){
oDiv[i].alpha=30;//若多个物体要进行自己的运动,不造成其他物体的影响,需对每个物体定义一个alpha.也可设置oDiv[i].timer = null;
oDiv[i].onmouseover=function(){
startMove(this,100);//this为当前的物体
}
oDiv[i].onmouseout=function(){
startMove(this,30);
}
}
}
//obj被套用为this,从而可以在每个alpha或timer上,进行套用.
function startMove(obj,iTarget){
clearInterval(obj.timer);//先要将原本的动画效果取消.
obj.timer = setInterval(function(){
var speed = 0;
if(obj.alpha>iTarget){
speed = -10;
}
else{
speed = 10;
}
if(obj.alpha == iTarget){
clearInterval(obj.timer);
}
else{
obj.alpha+=speed;
obj.style.opacity = obj.alpha/100;
}
},30)
}
</script>
</head>
<body>
<div></div>
<div></div>
<div></div>
<div></div>
</body>
</html>obj.alpha不是==iTarget时就清除动画了吗?
1 回答
已采纳
qq_杀意隆_0
TA贡献93条经验 获得超29个赞
鼠标移入div时,speed为10,obj.alpha初始值为30,iTarget初始值为100, 然后每过30毫秒obj.alpha的值加10。 这样一直加下去直到obj.alpha==100时(obj.alpha == iTarget)停止。 然后鼠标开始移出div时,此时obj.alpha的值为100(上一过程加到了100的),而iTarget的初始值被设为30, 就是这时候obj.alpha的值大于iTarget啊。然后obj.alpha的值每过30毫秒减10直到等于30时停止。
添加回答
举报
0/150
提交
取消