onmouseout 與 onmouseleave 的區(qū)別

其實(shí)在w3c上就有明確的說明。

mouseout:不論鼠標(biāo)指針離開被選元素還是任何子元素,都會(huì)觸發(fā) mouseout 事件。
mouseleave: 只有在鼠標(biāo)指針離開被選元素時(shí),才會(huì)觸發(fā) mouseleave 事件。

根據(jù)你的業(yè)務(wù)場景,正確使用api。

附一個(gè)伸縮導(dǎo)航欄的實(shí)現(xiàn)
需求:1.鼠標(biāo)觸及頂端顯示導(dǎo)航欄,移開不顯示。(移開后如何找到觸發(fā)點(diǎn)?使用透明的padding來隱藏觸發(fā)區(qū)域。)
2.顯示和隱藏,只有在移開和移入nav的時(shí)候才觸發(fā),注意性能。(原本想利用事件捕獲,后來發(fā)現(xiàn)沒必要,用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來寫樣式,我只是寫個(gè)demo所以這些細(xì)節(jié)就隨便一些*/
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>標(biāo)題1</li>
          <li>標(biāo)題2</li>
          <li>標(biāo)題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標(biāo)簽就會(huì)觸發(fā)nav的mouseout事件
contain.onmouseleave=function(e){
       if(e.target.tagName=="NAV"){
          if(nav.getAttribute("class")==="show"){
            nav.setAttribute("class","hide");
          }
      }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • (續(xù)jQuery基礎(chǔ)(1)) 第5章 DOM節(jié)點(diǎn)的復(fù)制與替換 (1)DOM拷貝clone() 克隆節(jié)點(diǎn)是DOM的常...
    凜0_0閱讀 1,504評論 0 8
  • 總結(jié): 鼠標(biāo)事件 1.click與dbclick事件$ele.click()$ele.click(handler(...
    阿r阿r閱讀 1,715評論 2 10
  • 13.1 事件流 “DOM2級事件”規(guī)定事件流包括3個(gè)階段:事件捕獲階段,處于目標(biāo)階段,事件冒泡階段。事件捕獲表示...
    Elevens_regret閱讀 526評論 0 0
  • 前言 什么是事務(wù)?所謂事務(wù)就是可以將幾個(gè)操作組成一個(gè)單元,要么操作全部執(zhí)行成功,要么哪個(gè)操作出了問題,就全部不成功...
    linheimx閱讀 1,517評論 0 1
  • 前幾天網(wǎng)上出現(xiàn)這樣一個(gè)新聞:月薪6000女子相親,一頓飯吃5000,嚇跑海歸男。具體事件如下:女,31歲,身材高挑...
    QY木心閱讀 622評論 0 0

友情鏈接更多精彩內(nèi)容