双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

请教:脚本模拟穿透层效果(pointer-events: none)出现的问题

phoenix.sky phoenix.sky 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
不少网站上都有这样的效果:A,B2层,B层在A层之上,点击B层能够触发下面A层,CSS3:pointer-events: none;实现起来很方便。

用脚本模拟一个这样的效果,有2个问题没有解决,特请教一下,谢谢!

1:点击B层时,自动触发A层的行为,B层是什么事件行为,A层就触发什么事件行为;
2:解决IE9-IE7不兼容问题。



<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Demo Pos</title>
<style type="text/css">
*{ margin: 0; padding: 0; border: 0; list-style: none; font-size: 1em; font-weight: 100; font-style: normal; }
body{ padding: 1em; color: #888; }
/**********/
.sels{ display: block; margin: 1em auto; padding: 10px; border: 1px solid #ddd; position: relative; }
.selectValue{ width: 200px; height: 30px; text-align: center; line-height: 30px; border-radius: 4px; border: 1px solid #bbb; background: #eee; background: -webkit-linear-gradient(top,#fff,#ddd); position: absolute; left: 10px; top: 10px; z-index: 100; /*pointer-events: none; CSS3实现此效果*/ }
.selectA{ width: 198px; height: 28px; margin: 1px 0 0 1px; }
</style>
</head>
<body>
<form action="#" class="sels">
<p class="selectValue" id="tecVal">请选择</p>
<select name="tec" id="tec" class="selectA">
<option>JavaScript</option>
<option>HTML5</option>
<option>CSS3</option>
<option>C++</option>
<option>C</option>
</select>
</form>
<script type="text/javascript">
function obj(id){ return document.getElementById(id); }
var tecVal=obj("tecVal");
var tec=obj("tec");
function noPointerEvents(em){
em.onclick=function(e){
this.style.display="none";
var x=e.pageX,y=e.pageY,under=document.elementFromPoint(x,y);
this.style.display="";
e.stopPropagation();
e.preventDefault();
alert(under.innerHTML);
//触发under,触发类型为e.type;
};
}
window.onload=function(){ noPointerEvents(tecVal); };
</script>
</body>
</html>
...全文

相关推荐

使用CSS的pointer-events属性实现鼠标穿透效果的神奇技巧

当pointer-events的值设置为none之后,浏览器将不会获得鼠标在当前位置的层上的点击事件,而造成鼠标穿透的效果!下面就来为大家展开讲解一下使用CSS的pointer-events属性实现鼠标穿透效果的神奇技巧

weixin_38617846

对vue中的事件穿透与禁止穿透实例详解

今天小编就为大家分享一篇对vue中的事件穿透与禁止穿透实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

weixin_38610277

css不常见属性之pointer-events的使用方法

MDN 上介绍为 CSS 属性指定在什么情况下 (如果有) 某个特定的图形元素可以成为鼠标事件的 target。 pointer-events 属性值有: /* 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:

weixin_38665804

详解CSS pointer-events属性的使用

主要介绍了CSS pointer-events属性的使用,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

weixin_38683895

CSS3 pointer-events属性解析[项目代码]

本文详细介绍了CSS3中的pointer-events属性,该属性用于控制DOM元素是否成为鼠标事件的目标。文章首先解释了pointer-events的基本概念,即允许或禁止DOM元素的鼠标事件(如点击、悬停等)。接着,分析了其具体属性值,包括auto、none等,并重点说明了none值的穿透效果,即鼠标事件会穿透当前层,监听下一层的元素。此外,文章还提供了实际代码案例,展示了如何通过pointer-events禁止点击或实现点击穿透效果,并讨论了子元素属性继承与覆盖的问题。最后,作者列出了该属性的浏览器兼容性信息,为开发者提供了实用的参考。

github5actions
评论
收藏 已收藏
分享
返回顶部
phoenix.sky
JavaScript 87,983 成员 224,680 内容