用javascript修改css规则对象

IT技术 javascript css oocss
2021-03-07 19:44:42

可能的重复:
从 Javascript 更改 CSS 规则集

我想知道是否有可能在不进行内联样式的情况下修改 Css 样式表声明。

这是一个快速示例:

<style>
    .box {color:green;}
    .box:hover {color:blue;}
</style>

<div class="box">TEXT</div>

这给出了一个蓝色的书面框,在悬停时变成绿色。

如果我为颜色提供内联样式,则悬停行为将丢失:

<div class="box" style="color:red;">TEXT</box>

无论如何,这都会给出一个红色的书写框。

所以我的问题是,如何访问和修改 css 声明对象而不是用内联样式覆盖样式。

谢谢,

2个回答

您可以使用与cssRules原始样式表相对应的 DOM 样式表对象来修改规则。

var sheet = document.styleSheets[0];
var rules = sheet.cssRules || sheet.rules;

rules[0].style.color = 'red';

请注意,IE 使用rules而不是cssRules.

这是一个演示:http : //jsfiddle.net/8Mnsf/1/

这很好。我想知道是否可以在不引用其索引位置的情况下针对特定规则集。
2021-04-17 19:44:42
正是我正在寻找的。谢谢你的提示。
2021-04-21 19:44:42
@ Musixauce3000什么你想要的目标的规则集?
2021-04-22 19:44:42
@AsadSaeeduddin 好吧,也许是标签。像 div、.wrapper 或 #output 。例如:document.stylesheet[0].cssRules[".mockButton"].style.color = '#FFF';
2021-05-02 19:44:42
@Musixauce3000 好吧rules,我的代码片段中变量是 a CSSRuleList,本质上是一个CSSRule对象数组假设您只是在寻找样式声明规则,您可以过滤rules以仅隔离CSSStyleRule实例,然后过滤这些以查找selectorText属性与某个字符串(或正则表达式)匹配的那些
2021-05-12 19:44:42

只需定义您的类,并使用 javascript 为 HTML 元素分配/删除类。

直接为元素分配样式,具有最高优先级,它将覆盖所有其他 CSS 规则。

编辑:您可能想要使用 cssText 属性,请参阅此处的示例cssText 属性

谢谢,但仍基于 javascript/内联样式编辑:快速误读 csstext 是编辑样式表解决方案的一部分
2021-04-18 19:44:42
我更新了一点答案,检查 cssText 属性
2021-04-29 19:44:42
为此,我需要提前知道修改样式的外观。如果基本样式基于用户输入怎么办?对于您的解决方案,我需要动态创建一个新的 css 类,这只是查看访问样式表问题的不同方式
2021-05-01 19:44:42
我不确定,你如何避免 JavaScript,但你也应该检查@Asad 的答案,看起来比我的更优雅。
2021-05-16 19:44:42