http://snook.ca/technical/jquery-bg/
大家看这个例子:
Example A: Top down菜单的蓝色由上向下滑动,鼠标离开时再滑动还原。原来这个菜单是用的是Jquery+插件做的!
这个菜单的原理很简单:就是控制了菜单的背景图片上下移动,所以看到这种效果!我想用JavaScript写个但是遇到麻烦事了,高分求个思路!以下是一些代码 实现背景的移动!
var position =obj.style.backgroundPosition.replace(/px/g," ");//菜单对象
xy = position.split(" ");
x = xy[0];
y = xy[2];
y = parseInt(y);
y=y+5;//让菜单的背景的TOP值+5
obj.style.backgroundPosition= x+"px "+y+"px";//重新给背景图片的Position属性赋值
我使用 window.setInterval 函数实现其不停的移动(向上向下)window.setInterval(function(){.........})
问题出来了:IE是单线程,比如说:鼠标落在菜单1上,菜单1的背景图片
就要向下移动,这时鼠标离开 菜单1 ,鼠标悬浮到 菜单2 的时候 ,会同时执行 菜单1的向上移动 和菜单2的向下移动(就像多线程那个样子)。
假如鼠标移动的很快可能是 菜单1 菜单2 菜单3 同时移动。小弟在此请教JavaScript版块的高手 谢谢!!!!!
大家看这个例子:
Example A: Top down菜单的蓝色由上向下滑动,鼠标离开时再滑动还原。原来这个菜单是用的是Jquery+插件做的!
这个菜单的原理很简单:就是控制了菜单的背景图片上下移动,所以看到这种效果!我想用JavaScript写个但是遇到麻烦事了,高分求个思路!以下是一些代码 实现背景的移动!
var position =obj.style.backgroundPosition.replace(/px/g," ");//菜单对象
xy = position.split(" ");
x = xy[0];
y = xy[2];
y = parseInt(y);
y=y+5;//让菜单的背景的TOP值+5
obj.style.backgroundPosition= x+"px "+y+"px";//重新给背景图片的Position属性赋值
我使用 window.setInterval 函数实现其不停的移动(向上向下)window.setInterval(function(){.........})
问题出来了:IE是单线程,比如说:鼠标落在菜单1上,菜单1的背景图片
就要向下移动,这时鼠标离开 菜单1 ,鼠标悬浮到 菜单2 的时候 ,会同时执行 菜单1的向上移动 和菜单2的向下移动(就像多线程那个样子)。
假如鼠标移动的很快可能是 菜单1 菜单2 菜单3 同时移动。小弟在此请教JavaScript版块的高手 谢谢!!!!!
ani1 = window.setInterval(function(){}, speed);和window.clearInterval(ani1);这是好习惯
<script>
var num=[0,0,0]
var ids={}
function over(el){
clearInterval(ids[el.id]);
ids[el.id]=setInterval(function(){
var a=num[el.id]++;
el.innerHTML=a;
},100);
}
function out(el){
clearInterval(ids[el.id]);
ids[el.id]=setInterval(function(){
var a=num[el.id]--;
if(a<=0){
num[el.id]=0
el.innerHTML="离开"
clearInterval(ids[el.id]);
return;
}
el.innerHTML=a;
},100);
}
</script>
<button onmouseover='over(this)' onmouseout="out(this)" id="0" style="width:100px">离开</button>
<button onmouseover='over(this)' onmouseout="out(this)" id="1" style="width:100px">离开</button>
<button onmouseover='over(this)' onmouseout="out(this)" id="2" style="width:100px">离开</button>