【发布时间】:2017-12-09 01:07:07
【问题描述】:
我有一个将指针事件设置为无的元素,因此子元素的悬停样式不会显示。
但是,当单击此元素时,我想用 JavaScript 做一些事情。在 JavaScript 中使用 onclick 事件似乎不起作用,因为 pointer-events 设置为 none。
有没有办法解决这个问题,这样我就可以让一个没有指针事件的元素仍然可以触发 JavaScript 事件?
[data-drawer="open"] {
.site-drawer {
transform: translateX(0);
transition: all .2s ease;
}
.site-container {
transform: translateX(-27.5rem);
// Disabling pointer events disables styles hover styles on below elements
// But also disables clicking on container to remove it.
pointer-events: none;
transition: all .2s ease;
&:after {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: rgba(0,0,0,.75);
content: "";
}
}
}
JavaScript:
this.siteContainer.addEventListener('click', (e) => {
console.log('site container clicked');
if(document.body.hasAttribute('data-drawer')) {
document.body.removeAttribute('data-drawer');
}
});
干杯
【问题讨论】:
-
你能告诉我你如何将指针事件设置为无吗?
-
抱歉不清楚,pointer-events 是一个 CSS 属性,用于控制元素何时可以成为鼠标事件的目标。
-
所以,
pointer-events正在做它应该做的事情,不允许此类事件发生。那么设置为none的目的是什么? -
当我希望用户关注的元素出现(即模式或滑入式导航菜单)时,我使用它在页面上应用包装器。虽然其中一个组件在页面上,但我不希望用户能够在容器内单击,因此我已将指针事件设置为无,但我仍然希望用户能够单击关闭它的模态页面。问题是没有指针事件设置为无悬停样式仍然出现在页面元素上,我想禁用悬停效果。
-
我建议使用伪元素和 z-index 在您的内容之上添加一个不可点击的叠加层,而不是使用 js
标签: javascript css events pointer-events