<script> let outer = document.querySelector('.outer'), inner = document.querySelector('.inner');
/** * onmouseover 和 onmouseout 存在事件的冒泡传播机制 * 从 父元素 滑入 到 子元素,属于 滑出 父元素, 滑入 子元素 * 从 子元素 滑入 到 父元素,属于 滑出 子元素, 滑入 父元素 * * 忽略了层级特点 */ // outer.onmouseover = function(){ // console.log('outer over'); // } // outer.onmouseout = function(){ // console.log('outer out'); // }
// inner.onmouseover = function(){ // console.log('inner over'); // } // inner.onmouseout = function(){ // console.log('inner out'); // } /** 如果有子元素,一般使用 onmouseenter 和 onmouseleave * onmouseenter 和 onmouseleave 默认阻止了冒泡传播机制 * 受到层级关系的影响 * 从 父元素 滑入 到 子元素,属于 进入 子元素, 但没有离开 父元素 * outer enter -》 inner enter -》 inner leave -》outer leave */ outer.onmouseenter = function(){ console.log('outer enter'); } outer.onmouseleave = function(){ console.log('outer leave'); }
inner.onmouseenter = function(){ console.log('inner enter'); } inner.onmouseleave = function(){ console.log('inner leave'); } </script> </body> </html>