JavaScript事件委托动态修改CSS伪元素:after和:before的样式

前言

我想要实现一个需求实现遮罩 | 无遮罩 如下:

网页的页面如图

在这里插入图片描述

加了一个伪元素::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");
});

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zoe_ya

如果你成功申请,可以打赏杯奶茶

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

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

打赏作者

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

抵扣说明:

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

余额充值