onmouseout 与 onmouseleave 的区别

其实在w3c上就有明确的说明。

mouseout:不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件。
mouseleave: 只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件。

根据你的业务场景,正确使用api。

附一个伸缩导航栏的实现
需求:1.鼠标触及顶端显示导航栏,移开不显示。(移开后如何找到触发点?使用透明的padding来隐藏触发区域。)
2.显示和隐藏,只有在移开和移入nav的时候才触发,注意性能。(原本想利用事件捕获,后来发现没必要,用mouseleave就行。可见正确用api的重要性。)
css

body{ margin:0 }
li{ display: inline-block;padding: 10px 20px;list-style: none; cursor: pointer;}
li:hover{ background-color: #ccc}
ul{background: #eee;display: inline-block;width: 100%;margin: 0px;}
#nav{background:transparent;padding-bottom: 10px;}/*一般不要用id来写样式,我只是写个demo所以这些细节就随便一些*/
b{margin: 0 20px;}
.show{
     margin: 0px;
     transition: margin 0.2s;
}
.hide{
    margin-top:-40px;
    transition: margin 0.2s;
}

html

<section id="contain">
      <nav id="nav" class="hide">
        <ul>
          <li>标题1</li>
          <li>标题2</li>
          <li>标题3</li>
        </ul>
      </nav>
</section>

js

var contain = document.getElementById("contain");
var nav = document.getElementById("nav");
contain.onmouseover=function(e){
        if(e.target.tagName=="NAV"){
          if(nav.getAttribute("class")==="hide"){
            nav.setAttribute("class","show");
          }
      }
  }
//如果使用mouseout,移到li标签就会触发nav的mouseout事件
contain.onmouseleave=function(e){
       if(e.target.tagName=="NAV"){
          if(nav.getAttribute("class")==="show"){
            nav.setAttribute("class","hide");
          }
      }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • (续jQuery基础(1)) 第5章 DOM节点的复制与替换 (1)DOM拷贝clone() 克隆节点是DOM的常...
    凛0_0阅读 5,274评论 0 8
  • 总结: 鼠标事件 1.click与dbclick事件$ele.click()$ele.click(handler(...
    阿r阿r阅读 5,563评论 2 10
  • 13.1 事件流 “DOM2级事件”规定事件流包括3个阶段:事件捕获阶段,处于目标阶段,事件冒泡阶段。事件捕获表示...
    Elevens_regret阅读 3,355评论 0 0
  • 前言 什么是事务?所谓事务就是可以将几个操作组成一个单元,要么操作全部执行成功,要么哪个操作出了问题,就全部不成功...
    linheimx阅读 5,313评论 0 1
  • 前几天网上出现这样一个新闻:月薪6000女子相亲,一顿饭吃5000,吓跑海归男。具体事件如下:女,31岁,身材高挑...
    QY木心阅读 3,607评论 0 0

友情链接更多精彩内容