绝对通过鼠标事件

我试图在一个元素上捕获鼠标事件,并在其上放置另一个绝对位置的元素。

现在,绝对定位的元素上的事件触及它并冒泡到它的父项,但我希望它对这些鼠标事件是“透明的”,并将它们转发给它后面的任何事件。 我应该如何实现这一点?


pointer-events:none;

是一个css属性,它使事件“通过”它所应用的DOM元素,并使事件发生在“below”元素上。

详情请参阅:https://developer.mozilla.org/en/css/pointer-events

它不支持IE 11; 所有其他供应商支持它相当长一段时间(全球支持在12/16'〜92%):http://caniuse.com/#feat=pointer-events(感谢@Sidnicious在评论中提供链接)


如果你所需要的只是mousedown,你可以通过以下方式来处理document.elementFromPoint方法:

  • 去除mousedown上的顶层,
  • 将事件的xy坐标传递给document.elementFromPoint方法以获取底层元素,然后
  • 恢复顶层。

  • 也很高兴知道...
    可以为父元素(可能是透明的div)禁用指针事件,但可以为子元素启用指针事件。 如果您使用多个重叠的div图层,并希望能够单击任何图层的子元素,这会很有帮助。 为此,所有父母的div都会得到pointer-events: none和click-children都会获得由pointer-events: all重新启用的pointer-events: all

    .parent {
        pointer-events:none;        
    }
    .child {
        pointer-events:all;
    }
    
    <div class="some-container">
       <ul class="layer-0 parent">
         <li class="click-me child"></li>
         <li class="click-me child"></li>
       </ul>
    
       <ul class="layer-1 parent">
         <li class="click-me-also child"></li>
         <li class="click-me-also child"></li>
       </ul>
    </div>
    
    链接地址: http://www.djcxy.com/p/49167.html

    上一篇: Pass mouse events through absolutely

    下一篇: Failed to deserialize sealed objects from Cipher input stream