css 中pointer-events 属性

7 阅读2分钟

pointer-events 是一个 CSS 属性,用于控制元素是否能够接收指针事件(如鼠标点击、触摸等)。这个属性对于创建覆盖层、自定义下拉菜单、弹出窗口等交互元素时非常有用。

以下是 pointer-events 属性的一些可能值及其含义:

  1. auto:这是默认值。元素能够接收指针事件,除非它是一个透明元素(opacity 设置为 0)。

  2. none:元素不会接收任何指针事件。这意味着指针事件会穿过该元素,就像它不存在一样,直接作用于它下面的元素。

  3. visiblePainted:元素只有在绘制了可见内容(即不是透明的)时才会接收指针事件。

  4. visibleFill:元素只有在绘制了可见填充(即不是透明的填充)时才会接收指针事件。

  5. visibleStroke:元素只有在绘制了可见描边(即不是透明的描边)时才会接收指针事件。

  6. visible:元素只有在绘制了可见内容(包括填充、描边和标记)时才会接收指针事件。

  7. painted:元素只有在绘制了可见内容(包括透明内容)时才会接收指针事件。

  8. fill:元素只有在绘制了可见填充时才会接收指针事件。

  9. stroke:元素只有在绘制了可见描边时才会接收指针事件。

  10. bounding-box:元素只有在指针事件发生在其边界框内时才会接收指针事件。

  11. all:元素会接收所有指针事件,无论其是否可见。

在实际应用中,pointer-events: none; 通常用于创建一个元素,使其覆盖在其他元素之上,但不阻止用户与这些被覆盖的元素进行交互。例如,如果你正在创建一个模态对话框,你可能不希望用户在对话框打开时与页面的其他部分进行交互。但是,如果你设置了 pointer-events: none; 在模态对话框上,用户仍然可以点击对话框后面的元素,直到你将这个属性从模态对话框上移除。

需要注意的是,pointer-events 属性不会影响元素的可见性,它只影响元素是否能够接收指针事件。即使元素是透明的或不可见的,只要 pointer-events 设置为 auto 或其他非 none 的值,它仍然可以接收指针事件。