桃太郎
2016-12-09 23:16
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>下拉菜单</title>
<style type="text/css">
#div1{width: 200px; height: 200px; background: red; line-height: 100px; position: relative; left: 200px; top: 0px; filter: alpha(opacity:30); opacity: 0.3; top: 50px;}
body{ margin:0; padding:0;}
</style>
<script type="text/javascript">
window.onload=function(){
var oDiv=document.getElementById("div1");
oDiv.onmouseover=function(){
stareMove(100);
}
oDiv.onmouseout=function(){
stareMove(20);
}
var timer=null,
filter=30;
function stareMove(iTarget){
clearInterval(timer);
var oDiv=document.getElementById("div1");
var speed=0;
if (filter<iTarget) {
speed=10;
}
else{
speed=-10;
}
timer=setInterval(function(){
filter+=speed;
if (filter==iTarget) {
clearInterval(timer);
}
else{
oDiv.style.filter='alpha(opacity:filter)';
oDiv.style.opacity=filter/100;
}
},30)
}
}
</script>
</head>
<body>
<div id="div1"></div>
</body>
</html>
首先,如果快速大幅度的划过鼠标,div便会消失,实际上是一种错觉,div并没有消失,而是透明度值变到0以下了,你看不到了div的背景颜色了而以.
首先filter+=speed;应该放在else里面,否则透明度显示范围(0.3,0.9),而我要求的是(0.2,1)。但是我不明白filter+=speed;放在else外,鼠标小浮动的划过,正常。当大幅度快速划过,透明度便一直在减小,就像没有走clearInterval(timer);一直执行else语句。
JS动画效果
113923 学习 · 1443 问题
相似问题