Bootstrap

自定义鼠标禁用样式踩坑`pointer-events: none;` 和 `cursor: not-allowed属性共用问题

在CSS中,pointer-events: none;cursor: not-allowed; 这两个属性虽然都涉及到用户与元素的交互,但它们的作用和目的并不相同,因此它们是可以同时使用的,但实际效果可能会有些出乎意料,具体取决于你的使用场景。

pointer-events: none;

这个属性用于定义在何种情况下元素可以成为鼠标事件的目标。设置为none时,意味着鼠标事件(如点击、悬停等)会“穿透”该元素,就像它不存在一样。这通常用于创建透明的点击区域或者使某个元素不可交互。

cursor: not-allowed;

这个属性用于改变鼠标指针的样式,当设置为not-allowed时,鼠标指针会变成一个圆圈加斜杠的图标,表示该元素或操作不被允许。这通常用于向用户反馈某个元素或操作当前处于不可用状态。

同时使用

当你同时在一个元素上设置pointer-events: none;cursor: not-allowed;时,pointer-events: none;会阻止所有鼠标事件,包括那些用于触发cursor样式改变的事件。因此,虽然你指定了cursor: not-allowed;,但由于鼠标事件被禁止,用户可能看不到这个改变后的光标样式,因为鼠标事件(如悬停)不会被该元素捕获。

使用场景

  • 如果你想让某个元素看起来不可点击(显示not-allowed光标),但仍然希望它接收一些鼠标事件(比如悬停时显示工具提示),那么你不能使用pointer-events: none;
  • 如果你想要元素完全不可交互,包括不显示任何特殊的鼠标光标样式,那么pointer-events: none;就足够了,无需设置cursor属性。
  • 如果你想要在元素不可交互时仍然向用户显示not-allowed光标(尽管这样做可能有些混淆,因为用户不能与之交互),你可能需要寻找其他方法来实现,比如将该元素置于一个透明的、pointer-events: none;的容器内,但容器不覆盖你想要显示not-allowed光标的元素部分。

总之,虽然技术上可以同时使用这两个属性,但它们的组合可能不会产生你期望的效果,特别是如果你希望用户能看到not-allowed光标的同时又让元素不可交互。

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;