了解pointer-events

1,863 阅读2分钟

当前还在用js来控制鼠标点击事件时,我偶然接触到了一个css属性pointer-events, 这个属性很神奇,一个pointer-events:none居然能处理JS中的禁止鼠标点击事件。 而且还不止,具体搜索下时发现了几个效果

  1. 阻止用户的点击动作产生任何效果
  2. 阻止鼠标指针的显示
  3. 阻止CSS里的hoveractive状态的变化触发事件
  4. 阻止JavaScript点击动作触发的事件 没想到吧,一个css属性,居然能完成这么多事情。 该属性可以拿来来禁止按钮的点击,这样的好处是样式上也得到了控制。当然,不要使用pointer-events来屏蔽一些十分关键的触发动作,因为这个样式可以通过浏览器控制台删除掉! 这个pointer-events属性有很多可以使用的属性值,但大部分都是针对SVG的:autononevisiblePainted*visibleFill*visibleStroke*visible*painted*fill*stroke*all*, 以及 inherit。其中none值能阻止点击、状态变化和鼠标指针变化。 同时,该属性有两点值得注意的事项
  5. 子元素可以声明pointer-events来解禁父元素的阻止鼠标事件限制。
  6. 如果你对一个元素设置了click事件监听器,然后你移除了pointer-events样式声明,或把它的值改变为auto,监听器会重新生效。基本上,监听器会遵守pointer-events的设定。 忘了还有个小贴士 在图表中,加入这个属性后,能解决移动的时候卡顿,亲测有效果!!!

最后的最后,还有个小问题,如果是从别处开始拖选文字,也会选中上面的问题。 这个时候请出一个新的css属性user-select:none配合使用完美的解决这个问题了!!!

最后面两个小贴士来自云简以及万兴两位大佬友情提供!在此感谢!!!