CSS里的pointer-events属性
因为 pointer-events 出现的问题
在 Vuetify 项目中,因为在 input 中使用了 tooltip ,意愿是文字溢出隐藏显示... ,
但 input 在 disabled 的状态内部文字的 tooptip 居然不显示了
在控制台发现了这个样式
.v-input--is-disabled:not(.v-input--is-readonly) {
pointer-events: none;
}
pointer-events: none; 这个很不常用, 下面看下这个属性具体是干什么的 原文
pointer-events
现代浏览器里 CSS 的职责范围和 JavaScript 的越来越模糊分不清。比如 CSS 里-webkit-touch-callout属性在 iOS 里能禁止当用户点击时弹出气泡框。而本文要说的pointer-events的风格更像 JavaScript,它能够:
- 阻止用户的点击动作产生任何效果
- 阻止缺省鼠标指针的显示
- 阻止 CSS 里的
hover和active状态的变化触发事件 - 阻止 JavaScript 点击动作触发的事件
一个 CSS 属性能做所有的这么多事情!
The CSS
这个pointer-events属性有很多可以使用的属性值,但大部分都是针对 SVG 的:auto, none, visiblePainted*, visibleFill*, visibleStroke*, visible*, painted*, fill*, stroke*, all*, 以及 inherit。其中none值能阻止点击、状态变化和鼠标指针变化:
.disabled {
pointer-events: none;
}
一些需要注意的关于pointer-events的事项:
- 子元素可以声明
pointer-events来解禁父元素的阻止鼠标事件限制。 - 如果你对一个元素设置了 click 事件监听器,然后你移除了
pointer-events样式声明,或把它的值改变为auto,监听器会重新生效。基本上,监听器会遵守pointer-events的设定。
处理问题
为了只让 tooltip 显示,而 input 的本身的禁用还在,可以直接在 tooltip 中的显示文字上添加 pointer-events: auto; 即可
// 内容部分
.tooltip-default-text {
pointer-events: auto;
}

浙公网安备 33010602011771号