CSS Pointer Events 怎么用?pointer-events 属性如何控制鼠标事件?

文章导读
上一个 测验 下一个 CSS pointer-events 属性用于控制元素如何响应指针事件,例如鼠标点击、鼠标悬停和鼠标移动。它允许您指定元素是否应该接收指针事件,以及这些事件是否应该触发点击或悬停等操作。
📋 目录
  1. 可能的值
  2. 适用元素
  3. 语法
  4. 注意事项
  5. CSS pointer-events - none 值
  6. CSS pointer-events - auto 值
  7. CSS pointer-events - 在图像上禁用 Pointer Events
A A

CSS - pointer-events 属性



上一个
测验
下一个

CSS pointer-events 属性用于控制元素如何响应指针事件,例如鼠标点击、鼠标悬停和鼠标移动。它允许您指定元素是否应该接收指针事件,以及这些事件是否应该触发点击或悬停等操作。

可能的值

  • auto − : 这是默认值。它表示元素按正常方式行为,并根据其指定的 CSS 属性和内容响应指针事件。在 SVG 内容中,此值与 visiblePainted 效果相同。

  • none − 此值表示元素不应响应指针事件。点击、悬停效果和其他交互将穿透元素,仿佛它不存在,下方的元素将接收这些事件。

  • visiblePainted − 此值表示元素仅在可见的绘制区域被触发时接收指针事件。元素内的透明区域不响应指针事件。

  • visibleFill − 与 visiblePainted 类似,此值表示元素仅响应在可见绘制区域或填充区域触发的指针事件,忽略透明区域的指针事件。

  • visibleStroke − 与 visiblePaintedvisibleFill 类似,此值表示元素仅响应在可见绘制区域或描边区域触发的指针事件,忽略透明区域的指针事件。

  • visible − 仅当 visibility 设置为 visible 时针对指针事件,且鼠标光标位于其内部(fill)或周边(stroke)上方,fillstroke 值不影响事件处理。

  • painted − 此值表示元素仅响应在其绘制内容上触发的指针事件。元素内的透明区域不响应指针事件。

  • fill − 与 painted 类似,此值表示元素仅响应在其填充上触发的指针事件,忽略透明区域的事件。

  • stroke − 与 paintedfill 类似,此值表示元素仅响应在其描边上触发的指针事件,忽略透明区域的事件。

  • all − 当指针位于其内部(fill)或周边(stroke)上方时针对指针事件。fillstrokevisibility 属性值不受影响。

适用元素

所有元素。

语法

pointer-events: auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all;

注意事项

当此属性未定义时,SVG 内容具有与 visiblePainted 值相同的属性。

none 值不仅使元素不再是 pointer event 的目标,还允许事件穿透,针对元素下方的内容。

使用 pointer-events 在元素上禁用指针事件并不意味着事件监听器不会被触发。如果该元素的子元素启用了 pointer-events 以允许其成为事件目标,针对子元素的事件将通过父元素传递,可能触发事件监听器。但是,如果指针活动发生在仅由父元素覆盖的区域,则子元素和父元素都会错过该事件。

具有 pointer-events: none 的元素仍然可以通过 Tab 键的顺序键盘导航获得焦点。

CSS pointer-events - none 值

以下示例演示了 pointer-events: none 属性如何禁用超链接的点击 −

<html>
<head>
<style> 
   a[href="https://_css_pointer-event.com"] {
      pointer-events: none;
   }
</style>
</head>
<body>
   <a href="https://_css_pointer-event.com">css_pointer-event</a>
</body>
</html>

CSS pointer-events - auto 值

以下示例演示了 pointer-events: auto 属性允许锚元素可被点击 −

<html>
<head>
<style> 
   a[href="https://_css_pointer-event.com"] {
      pointer-events: auto;
   }
</style>
</head>
<body>
   <a href="https://_css_pointer-event.com">css_pointer-event</a>
</body>
</html>

CSS pointer-events - 在图像上禁用 Pointer Events

以下示例演示了 pointer-events: none 属性在图像上禁用 pointer events(点击、悬停等) −

<html>
<head>
<style>
   img {
      height: 100px; 
      width: 100px;
      pointer-events: none;
   }
</style>
</head>
<body>
   <img src="images/pink-flower.jpg" alt="pink-flower">
</body>
</html>