javascript - 为什么 document.querySelector 不适用于伪元素?

标签 javascript html css

我正在玩伪元素和 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>

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

最佳答案

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

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

关于javascript - 为什么 document.querySelector 不适用于伪元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26095149/

相关文章:

javascript - 是否可以在没有网络服务器的情况下加载 gzip 压缩的 javascript?

javascript - 使用 .no-js 类检测 js

javascript - 使用串联将图像 url 设置为背景属性

javascript - 方向服务谷歌地图

javascript - 补丁 Rails 3 以修复 CSRF 保护漏洞

html - Outlook 2013 中的电子邮件通讯第一个空表格单元格高度问题

html - 格式未应用 CSS

javascript - 显示/折叠文本

javascript - 使用 span 标签时摆脱 p 标签内的空间

javascript - 嵌入 iframe 的 Three.js 在 iOS 8/9 中不断增长