前言
我想要实现一个需求实现遮罩 | 无遮罩 如下:
网页的页面如图
加了一个伪元素::before实现了遮罩效果
但是我想在点击按钮的时候清除掉这个效果
呈现本来的图片
解决方法
思路:
- 新增图片的伪元素样式
- JS触发点击事件用来覆盖原有的样式
- 完成图片去掉伪元素显示
.side.left {
left: 0;
background: url(src/yulia_1.jpg);
background-repeat: no-repeat;
background-size: cover;
}
.side.left::before {
content: "";
position: absolute;
width: 100%;
height: 100%;
background-color: rgba(107, 126, 129, 0.7);
}
.side.left.myClick::before {
content: "";
position: absolute;
width: 100%;
height: 100%;
background-color: transparent;
}
.side.right {
right: 0;
background: url("src/yulia_2.jpg");
background-repeat: no-repeat;
background-size: cover;
}
.side.right::before {
content: "";
position: absolute;
width: 100%;
height: 100%;
background-color: rgba(43, 43, 43, 0.8);
}
.side.right.myClick::before {
content: "";
position: absolute;
width: 100%;
height: 100%;
background-color: transparent;
}
const clearBtnLeft = document.querySelectorAll(".btn")[0];
const clearBtnRight = document.querySelectorAll(".btn")[1];
// 获取要移除伪类的元素
const myLeft = document.querySelector(".side.left");
const myRight = document.querySelector(".side.right");
// 移除伪类:before
/*新增伪元素样式,用来覆盖原有的样式 完成图片去掉伪类显示*/
clearBtnLeft.addEventListener("click", () => {
myLeft.classList.add("myClick");
});
clearBtnRight.addEventListener("click", () => {
myRight.classList.add("myClick");
});