为什么document.querySelector不能处理伪元素?

时间:2014-09-29 08:01:44

标签: javascript html5 css3

我正在玩伪元素和javascript,但有些我不能用javascript来设置它。

    var div = document.querySelector(":before");
    div.style["display"] ="none";
div{
    width:200px;
    height:200px;
    background:red;
    position:relative;
}

div:before{
    position:absolute;
    content:'';
    top:0;
    right:-100px;
    width:100px;
    height:100%;
    background:green;
}
<div></div>

有谁知道为什么这不起作用?

1 个答案:

答案 0 :(得分:8)

如果你想从javascript设置伪元素的样式,你必须使用CSSOM来注入规则。这不是微不足道的,但它是可能的。

var sheet = document.styleSheets[0]; //get style sheet somehow
var rules = sheet.rules; 
sheet.insertRule('div:before { display: none; }', rules.length);

a slightly modified example from this article

CCSOM Reference