此问题在此处已有答案:
Selecting and manipulating CSS pseudo-elements such as ::before and ::after using javascript (or jQuery)(26个答案)
两年前关闭了。
我如何改变CSS的伪元素样式?
我正在尝试获取CSS before::
规则并将left:
更改为95%
或4px
。如何在我的上下文中执行此操作?
我还使用document.querySelector
进行了一些测试,但它不起作用,我得到了一个计算只读错误。
你有什么建议吗?
示例:
css
.iziToast-wrapper-bottomLeft .iziToast.iziToast-balloon:before {
border-right: 15px solid transparent;
border-left: 0 solid transparent;
right: auto;
left: 8px;
}
js
if(description_iziToast){
let RightMode = event.x>window.innerWidth/2;
let bubblePosition = document.getElementsByClassName("iziToast-balloon")[0]; // get the div that hold the bubble
let ajustScreenLR = RightMode && document.getElementsByClassName("iziToast")[0].offsetWidth || 0; // halfScreen ajustement
//bubblePosition.style.left = RightMode && '95%' || '4px'; // here i need to change the position in the befor:: attribut
description_iziToast.style.left = `${event.x-20-ajustScreenLR}px`;
description_iziToast.style.top = `${event.y-105}px`;
}
}else{
if(description_iziToast){ iziToast.destroy(); description_iziToast = false; };
}
2条答案
按热度按时间j5fpnvbx1#
由于DOM中不存在伪元素,因此无法在Javascript中访问它们。解决方法是创建一个
<span>
,而不是使用:before
,并且必须应用相同的逻辑。x6492ojm2#
以下是直接操作伪元素的两种方法:
1 -使用某种 * 样式管理器 *
这个“管理器”是一个带有方法的对象,它允许更容易地动态操作CSS规则,所以这里是一个非常基本的示例,您可以根据自己的特定需要学习和实现它:
2 -使用CSS变量:
一个一个三个一个一个一个一个一个四个一个一个一个一个一个五个一个