使用JavaScript修改CSS选择器 :after

15 浏览
0 Comments

使用JavaScript修改CSS选择器 :after

如何通过JavaScript访问或修改CSS中元素的伪选择器,如:after和:hover(请不要使用jQuery)。

示例:

进度条示例

如你所见,我想使用类似进度条的东西,所以我不能简单地交换/添加/删除元素的第二个类。我想通过JS直接访问progressbar:after(使用:after选择器)类的width属性。但是如何实现呢?

0
0 Comments

问题的出现原因是Firefox 26不支持addRule函数,导致在其他浏览器上,宽度值被应用于主要元素,而不是:after伪元素(整个div增长但不是蓝色条内部)。

解决方法是使用insertRule函数来添加样式规则。通过创建一个新的style元素,并将其添加到文档头部,然后获取样式表对象,并使用insertRule函数向样式表中插入规则。

具体的解决方法如下所示:

//创建新的style元素
var style = document.createElement("style");
//将style元素添加到文档头部
document.head.appendChild(style);
//获取样式表对象
sheet = style.sheet
//使用insertRule函数向样式表中插入规则 -- 将这一行改为insertRule
sheet.insertRule('.progressbar::after { width: 50% }', 0);

你可以尝试使用上述代码来修改CSS选择器:after的样式。点击这里查看更新后的示例。

这样,无论是在Firefox 26还是其他浏览器中,都能够正确地将宽度值应用于:after伪元素。

0