给伪元素添加点击事件的方法

1
伪元素应该是没办法直接添加点击事件的...但是可以利用css的pointer-events属性去控制父元素不响应鼠标事件
1
2
3
<div class="app">
<div class="app-content"></div>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
.app {
width: 100px;
height: 100px;
margin: 50px auto;
border-radius: 2px;
background-color: palegreen;
position: relative;
/* 关闭父元素的点击事件 */
pointer-events: none;
}
.app * {
/* 父元素下的元素重新开启点击事件 */
pointer-events: auto;
}
.app-content {
width: 50px;
height: 50px;
position: absolute;
left: 0;
top: 0;
background: cornflowerblue;
}
.app::after {
content: "";
display: block;
background: paleturquoise;
width: 30px;
height: 30px;
position: absolute;
right: 0;
bottom: 0;
pointer-events: auto;
}
1
2
3
4
5
6
var app = document.querySelector(".app");
// 获取伪元素的方法
var appPseudo = getComputedStyle(app, ":after");
app.addEventListener("click", function (e) {
console.log("click", e.target);
});