【菜狗学前端】鼠标移出:mouseleave 和 mouseout 区别(通俗易懂版)

最近学到了事件,感觉鼠标移出事件mouseleavemouseout区别有点难懂,查资料又觉得似乎都不够形象直白,于是浅写一下希望能帮助到和我一样有疑惑的伙伴。


首先先上结论:两者的不同在于 mouseleave不会冒泡而 mouseout会冒泡。

事件冒泡:从内到外 事件由子级向父级传播

通俗讲,mouseleave只care自己,mouseout还care子代(无论进还是出)


疑惑的点等待继续学习钻研——为什么移入子代节点也会触发父亲节点的mouseout事件???


还是不太理解?OK,下面直接上代码看例子。

一、例子概述:

  1. 一个红父盒子里有一个蓝子盒子

  2. 父盒子同时绑定了mouseleave变黄 mouseout变白事件

  3. 触发对应事件:父盒子背景色改变+console.log打印该事件名

二、运行结果:

鼠标移出:mouseleave 和 mouseout 区别

三、结果分析:

鼠标仅移出父盒子自身时,才会触发父盒子的mouseleave事件

而鼠标移出/移入子盒子 / 移出父盒子时,都会触发父盒子的mouseout事件

移出父盒子时,先执行mouseout事件后执行mouseleave事件(所以效果是变黄)

PS:再仔细看看-鼠标移出/移入子盒子时触发父盒子的mouseout事件结果

mouseout

四、代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /*父亲盒子样式--红色*/
        .fa {
            background-color: red;
            width: 300px;
            height: 300px;
        }
        /*孩子盒子样式--蓝色*/
        .son {
            background-color: blue;
            width: 100px;
            height: 100px;
        }
    </style>
</head>

<body>
    <!-- 父亲盒子 -->
    <div class="fa" >
        <!-- 孩子盒子 -->
        <div class="son"></div>
    </div>

    <script>
        //获取父子元素节点
        var fa = document.querySelector(".fa")
        var son=document.querySelector(".son")

        //父亲盒子绑定onmouseleave事件--变黄色
        fa.onmouseleave= function () {
            fa.style.backgroundColor = "yellow";
            console.log("fa.onmouseleave");
        }

        //父亲盒子绑定onmouseout事件--变白色
        fa.onmouseout= function () {
            fa.style.backgroundColor = "white";
            console.log("fa.onmouseout");
        }

    </script>
</body>
</html>

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值