账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    javascript中 鼠标移入实现div变小,可div变小过程中鼠标已经不在div上
    • 2017-10-23 00:00
    • 10
    54
    0

    常见的效果是鼠标移入某个对象上放大,移出时回到原来大小。这个demo希望实现的结果是移入时缩小,移出时放大。但这样就总是会出现闪现的效果。鼠标移出时变大,但变大却使得原来位置的鼠标变成了移入。所以当鼠标快速重复移入移出操作时,看到的效果会很奇怪。拜托高手帮我看一下怎样解决这个问题,非常感谢!

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8" />
    <title></title>
    <style>
        #div1{width: 300px;height: 300px;background-color: red;}
    </style>
    </head>
    <body>
        <div id="div1"></div>
    </body>
    <script>
    var div1=document.getElementById('div1');
    var timer=null;
    div1.onmouseover=function(){
        move(this,{width:100,height:100},10);
    }
    div1.onmouseout=function(){
        move(this,{width:300,height:300},10);
    }
    /*--------------------单一物体多属性匀速运动框架-------------------------*/
    function move(obj,json,speed){
        clearInterval(timer);
        changeValue=0;
        timer=setInterval(function(){
            var btn=true;
            for(var attr in json){
                speed=speed<0?-speed:speed;
                changeValue=parseInt(getStyle(obj,attr));
                speed=changeValue>json[attr]?-speed:speed;//判断速度正负。
                if((speed<0&&changeValue+speed>json[attr])||(speed>0&&changeValue+speed<json[attr])){
                    obj.style[attr]=changeValue+speed+'px';
                }
                else{
                    obj.style[attr]=json[attr]+'px';
                }            
            }
            if(btn){
                clearInterval(obj.timer);
            }
        },30);
    }
    /*--------------------获取样式的函数-------------------------*/
    function getStyle(obj,attr)
    {
        return obj.currentStyle?obj.currentStyle[attr]:getComputedStyle(obj,null )[attr];
    }
    </script> 
    </html>
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 洒了囚心酒 普通会员 1楼

      在JavaScript中,你可以使用onmousemove事件来监听鼠标在文档上的移动。当鼠标移动到文档的某个位置时,你可以使用getBoundingClientRect()方法来获取该位置的元素的大小。然后,你可以将这个大小与你原来的div的大小进行比较,如果它们的大小不匹配,你就可以调整div的大小。

      以下是一个简单的例子:

      ```javascript var div = document.getElementById('myDiv'); div.style.width = '200px'; div.style.height = '200px';

      var rect = div.getBoundingClientRect(); var oldWidth = div.offsetWidth; var oldHeight = div.offsetHeight;

      div.style.width = rect.width + 'px'; div.style.height = rect.height + 'px';

      var diff = Math.abs(oldWidth - div.offsetWidth); var diff2 = Math.abs(oldHeight - div.offsetHeight);

      if(diff > 10) { div.style.width = '100px'; div.style.height = '100px'; }

      if(diff2 > 10) { div.style.width = '200px'; div.style.height = '200px'; } ```

      在这个例子中,我们首先获取了div的原始大小,然后使用getBoundingClientRect()方法获取了div的位置。然后,我们计算了div的当前大小和原始大小之间的差值,如果这个差值大于10,我们就将div的大小调整为100px,这样就可以使div变小。如果这个差值小于或等于10,我们就将div的大小调整为原始大小。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部