认识 CSS pointer-events 属性

这篇具有很好参考价值的文章主要介绍了认识 CSS pointer-events 属性。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

pointer-events 的基本信息

pointer-events 属性用来控制一个元素能否响应鼠标操作,常用的关键字有 autonone

pointer-events: none; // 让一个元素忽略鼠标操作
pointer-events: auto; // 还原浏览器设定的默认行为 

规范定义

条目 状态
初始值 auto
可用值 适用所有元素:auto/none,只适用于 SVG:bounding-box/visiblePainted/visibleFill/visibleStroke/visible/painted/fill/stroke/all
可继承 是的
动画类型 离散动画(关键帧之间不会有插帧,不会有过渡动画)

兼容性

pointer-events,css,前端,css3

pointer-events: none 的效果:忽略鼠标操作

对一个元素设置 pointer-events: none,能让浏览器在处理鼠标操作时,忽视掉这个元素的存在,直接「穿透」到点击区域背后的元素上。

意味着直接在这个元素上做鼠标操作时

  • 该元素上的鼠标效果不会被处理,例如 hover 效果
  • 该元素上的鼠标事件不会被响应,例如 click、mousein、mousedown 事件

什么是「穿透」

我们来结合例子说明。

pointer-events 是一个可继承属性,按照 CSS 的层叠与继承规则,子元素未设置 pointer-events 时将会继承父值。

如下例,self 元素设置 pointer-events: none ,child 元素继承到 pointer-events 也为 none

此时点击 child 区域,浏览器会忽视 child 和 self 的存在,点击操作穿透到最底下的 parent 元素上,触发 parent 上的点击事件,打印出 parent click。

pointer-events,css,前端,css3

如果移动 child 使之不与 parent 区域重叠,此时点击 child 穿透不到 parent 元素上,不会触发 parent 上的点击事件。

pointer-events,css,前端,css3

这就是点击区域上的「穿透」效果了。

如果这时将 child 设置为 pointer-events: auto 来还原对鼠标操作的响应,点击 child,触发 child 上的 click 事件,接着事件冒泡触发三级打印。

pointer-events,css,前端,css3

可见 pointer-events 只是说明某个元素是否响应直接作用在它身上的鼠标操作,不会干扰事件冒泡捕获流程。

另外,可继承性也意味着如果在 body 上设置 pointer-events: none,将会作用于 body 下的所有元素。

应用场景

pointer-events: none 带来两个特点:

  • 使直接作用在元素上的鼠标操作失效
  • 「穿透」到下层

灵活运用这两个特点,能轻巧地实现一些效果

穿透遮挡物

例如 Tailwind CSS 给的这个例子,希望点击搜索图标时能聚焦到输入框。只要对图标元素设置 pointer-events: none 做穿透即可。

pointer-events,css,前端,css3
<div class="relative"><div class="absolute pointer-events-none"><svg class="absolute text-slate-400 h-5 w-5" viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z" clip-rule="evenodd" /></svg></div><input type="text" placeholder="Search" class="...">
</div> 

防止连续操作

例如点击提交按钮后,为按钮设置 pointer-events: none 防止连续提交。

更进一步甚至可以结合 :active 和 animation 实现 throttle 效果,还在用 JS 做节流吗?CSS 也可以防止按钮重复点击 - 掘金 (juejin.cn),很有趣的玩法,可以扩展阅读看看哟。

pointer-events,css,前端,css3

模拟禁用效果

例如给 a 标签设置 pointer-events: none 阻止默认行为。但是需要小心,不响应鼠标操作并不等同于阻止事件响应,事件冒泡捕获机制与 pointer-events 无关,在子元素上设置 pointer-events: auto 还是可以触发父元素上绑定的事件,并且继续向上冒泡。

总结一下

pointer-events 用于控制元素是否响应鼠标操作。

设置 pointer-events: none 时,元素将会去除默认的鼠标效果(例如 hover), 并且元素自身无法触发鼠标事件。浏览器会忽视该元素的存在,将操作交给点击区域下面对应的元素,产生「穿透」效果。

pointer-events 是一个继承属性,pointer-events 与事件冒泡捕获机制无关。

pointer-events 有哪些应用场景呢?

1.穿透遮挡物
2.防止连续操作
3.模拟禁用效果

最后

整理了一套《前端大厂面试宝典》,包含了HTML、CSS、JavaScript、HTTP、TCP协议、浏览器、VUE、React、数据结构和算法,一共201道面试题,并对每个问题作出了回答和解析。
pointer-events,css,前端,css3
有需要的小伙伴,可以点击文末卡片领取这份文档,无偿分享

部分文档展示:
pointer-events,css,前端,css3
pointer-events,css,前端,css3
pointer-events,css,前端,css3
pointer-events,css,前端,css3

文章篇幅有限,后面的内容就不一一展示了

有需要的小伙伴,可以点下方卡片免费领取文章来源地址https://www.toymoban.com/news/detail-669156.html

到了这里,关于认识 CSS pointer-events 属性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [HTML]Web前端开发技术8(HTML5、CSS3、JavaScript )CSS样式属性,withborder,italic | oblique,indent,padding,——喵喵画网页

    希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要! 目录 前言 CSS属性值中的单位 CSS字体样式 font-size设置字号 字体样式font-style属性 字体系列font-family属性 字体变体

    2024年02月04日
    浏览(73)
  • CSS3属性详解(一)文本 盒模型中的 box-ssize 属性 处理兼容性问题:私有前缀 边框 背景属性 渐变 前端开发入门笔记(七)

    CSS3是用于为HTML文档添加样式和布局的最新版本的层叠样式表 (Cascading Style Sheets)。下面是一些常用的CSS3属性及其详细解释: border-radius:设置元素的边框圆角的半径。可以使用四个值设置四个不同的圆角半径,也可以只使用一个值来设置统一的圆角。 box-shadow:创建一个元

    2024年02月08日
    浏览(55)
  • CSS选择器-CSS3属性

    持续更新… 1、CSS3的概念和优势 CSS3是CSS技术的升级版本,CSS3语言开发是朝着模块化发展的。以前的规范作为一个模块实在是太庞大而且比较复杂,所以,把它分解为一些小的模块,更多新的模块也被加入进来。这些模块包括:盒子模型、列表模块、超链接方式、语言模块、

    2024年02月11日
    浏览(44)
  • css3新增属性

    box-shadow: 10px 10px 10px rgba(54,54,54,0.36); 元素阴影,这个不会影响页面布局;分别指定如下参数: 水平偏移量,正数向右,负数向左 垂直偏移量,正数向下,负数向上 阴影模糊效果,数值越大越模糊 颜色 border-radius: 2px; 边框圆角半径,会影响box-shadow显示 border-top-left-radius bord

    2024年02月12日
    浏览(41)
  • css3 - 属性选择器

    2024年02月14日
    浏览(44)
  • CSS3渐变属性详解

    线性渐变 概念:线性渐变,指的是在一条直线上进行的渐变。在线性渐变过程中, 起始颜色会沿着一条直线按顺序过渡到结束颜色 语法: 渐变角度 线性渐变的“ 渐变角度 ”取值有两种: 一种是使用角度(单位为deg) 另一种是使用。 取值 属性值 对应角度 说

    2024年02月02日
    浏览(46)
  • CSS新手入门笔记整理:CSS3属性表

    属性 属性值 说明 text-shadow 数值 文本阴影 text-stroke 数值 文本描边 text-overflow ellipsis(文本溢出时,显示省略号,隐藏多余的文字) clip(文本溢出时,不显示省略号,裁切多余的文字) 文本溢出 word-wrap normal(自动换行) break-word(强制换行) 强制换行 word-break normal(自动换

    2024年02月03日
    浏览(43)
  • css3的过度效果transition支持哪些属性,Transition 所支持的css属性

    transition-property是用来指定当元素其中一个属性改变时执行transition效果: 所支持的属性类型如下: 名称 描述 属性 color:  通过红、绿、蓝和透明度组件变换(每个数值处理) 如: background-color, border-color, color, outline-color等css属性; length: 真实的数字 如: word-spacing, width, verti

    2024年01月17日
    浏览(49)
  • css3 transtion属性的使用

    主要实现多个内容排列时从下到上过渡 或者 从左到右过渡。 思路:主要是利用flex布局的flex-direction属性和align-items属性。 flex-direction属性决定主轴的方向(即项目的排列方向) align-items属性定义项目在交叉轴上如何对齐。 一、从下到上过渡(方案1)  1.先上效果图 效果图

    2024年02月17日
    浏览(49)
  • 无涯教程-CSS3 - 3D转换属性

    使用3d变换,无涯教程可以将元素移动到x轴,y轴和z轴。下面的示例清楚地指定了元素将如何旋转。 以下方法用于调用3D变换- Sr.No. Value Remark 1 matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n) 用于通过使用矩阵的16个值来变换元素 2 translate3d(x,y,z) 用于通过使用x轴,

    2024年02月20日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包