使用pointer-events避免html元素重复点击

164 阅读2分钟

pointer-events CSS属性指定在什么情况下(如果有)某个特定的图形元素可以成为鼠标点击事件的target。

/* Keyword values */
pointer-events: auto;
pointer-events: none;
pointer-events: visiblePainted; /* SVG only */
pointer-events: visibleFill;    /* SVG only */
pointer-events: visibleStroke;  /* SVG only */
pointer-events: visible;        /* SVG only */
pointer-events: painted;        /* SVG only */
pointer-events: fill;           /* SVG only */
pointer-events: stroke;         /* SVG only */
pointer-events: all;            /* SVG only */

/* Global values */
pointer-events: inherit;
pointer-events: initial;
pointer-events: unset;

当前属性未指定时,visiblePainted的值的相同特征适用于SVG(可缩放矢量图形)内容。

除了指示钙元素不是鼠标事件的目标之外,值none表示鼠标事件“穿透”该元素并且指定该元素“下面”的任何东西。

内容项
初始值auto
适用元素all elements
是否是继承属性yes
计算值as specified
Animation typediscrete

语法

pointer-events属性被指定为从下面的值列表中选择的一个关键字。

auto

pointer-events属性未指定时的表现效果相同,对于 SVG 内容,该值与visiblePainted效果相同。

none

元素永远不会成为鼠标事件的target 。但是,当其后代元素的pointer-events属性指定其他值时,鼠标事件可以指向后代元素,在这种情况下,鼠标事件将在捕获或冒泡阶段触发父元素的事件侦听器。

visiblePainted

只适用于 SVG。元素只有在以下情况才会成为鼠标事件的目标:

  • visibility属性值为visible,且鼠标指针在元素内部,且fill属性指定了none之外的值
  • visibility属性值为visible,鼠标指针在元素边界上,且stroke属性指定了none之外的值

visibleFill

只适用于 SVG。只有在元素visibility属性值为visible,且鼠标指针在元素内部时,元素才会成为鼠标事件的目标,fill属性的值不影响事件处理。

visibleStroke