html系列:按钮被样式图片挡着了,无法点击怎么办

3 篇文章 0 订阅

背景

在开发中会遇到一些奇奇怪怪的需求,比如在按钮上要显示一个样式图片,同时还要能不影响按钮的点击使用;这时候,设置好了样式,按钮无法点击怎么办?

在查阅资料的时候找到了解决方案。

解决方案

一行代码解决这个问题

在设置图片那里,比如图片是div背景图,div的class为bg

/*设置后,鼠标事件将不会作用在该元素之上,现在点击按钮就会触发点击事件*/
pointer-events: none;

说明

pointer-events: none;理解:你可以看的到某个元素,但是你无法摸的着,点击不到,点击会穿透触发到下层的元素 display:none; 是你摸不着,但是你也看不见。

pointer-events:auto | none | visiblepainted | visiblefill | visiblestroke | visible | painted | fill | stroke | all

默认值:auto,

auto:与pointer-events属性未指定时的表现效果相同。在svg内容上与visiblepainted值相同

none:元素永远不会成为鼠标事件的target。但是,当其后代元素的pointer-events属性指定其他值时,鼠标事件可以指向后代元素,在这种情况下,鼠标事件将在捕获或冒泡阶触发父元素的事件侦听器。其他值只能应用在SVG上。
在这里插入图片描述

实际应用中,当红色盒子绝对定位在绿色盒子之上时,给绿色盒子添加点击事件,点击红色盒子区域正常情况下肯定不会触发点击事件。

但是当我们给红色盒子添加样式属性pointer-events:none;意思是红色盒子将不在是鼠标事件的target,也就是说鼠标事件将不会作用在该元素之上,现在点击红色盒子就会触发点击事件了。

附录

附:mdn中的配置

/* 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;

参考

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

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪潮行舟

你的鼓励是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值