代码如下。如果快速大幅度的划过鼠标,div便会消失。求解

来源:2-2 JS透明度动画

桃太郎

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>

写回答 关注

2回答

  • 慕数据5775487
    2016-12-14 22:48:04

    首先,如果快速大幅度的划过鼠标,div便会消失,实际上是一种错觉,div并没有消失,而是透明度值变到0以下了,你看不到了div的背景颜色了而以.

    桃太郎

    这个我知道,我说的是表象像消失一样。谢谢呢

    2016-12-15 21:58:39

    共 1 条回复 >

  • 桃太郎
    2016-12-10 11:38:53
    1. 首先filter+=speed;应该放在else里面,否则透明度显示范围(0.3,0.9),而我要求的是(0.2,1)。但是我不明白filter+=speed;放在else外,鼠标小浮动的划过,正常。当大幅度快速划过,透明度便一直在减小,就像没有走clearInterval(timer);一直执行else语句。

JS动画效果

通过本课程JS动画的学习,从简单动画开始,逐步深入各种动画框架封装

113923 学习 · 1443 问题

查看课程

相似问题