我想创建一个使用JavaScript的非常低的特异性CSS属性。就像!unimportant
(哪个不存在)创建一个非常低的特异性CSS属性
我不知道这是否可能。
我寻找类似!unimportant
之类的理由是我正在写一个小的JavaScript插件。我想在其中添加一个默认样式到一个元素,这个元素后来应该很容易被用户覆盖。
但如果我写:
element.style.backgroundColor = "green";
用户将不能够容易地替换掉上面的样式,而无需使用!important
。
var style = document.createElement('style');
// WebKit hack :(
style.appendChild(document.createTextNode(""));
document.head.appendChild(style);
,然后上面的代码中,我使用下面的代码添加动态样式表:
var element = document.getElementById('main');
// To use attribute names to apply the styles
element.setAttribute('custom-el', '1');
var sheet = style.sheet;
var properties = "background-color: green;";
var elName = "[custom-el]";
if (sheet.insertRule) {
sheet.insertRule(elName + "{" + properties + "}", 0);
} else if (sheet.addRule) {
sheet.addRule(elName, properties, 0);
}
现在background-color: green
可以是这样,我用下面的代码添加了动感的风格标签通过使用下面的代码重写:
div.main {
background-color: red;
}
但你可以在CSS看到,我用较高的特异性覆盖background-color: green
即div
+ .green
。
但我希望被覆盖的,甚至当用户写下面的CSS发生:
.main{ /* Could be simple class name or id name or even tag name */
background-color: red;
}
这可能似乎是一个小问题。但对我来说这是一个很大的问题。请帮忙。
不知道我是否完全理解了你,但是如何在'element'(如'div')上设置基础样式? – Harry
@Harry如果我将样式应用于'div'标记,那么它将应用于所有div元素。我不是在寻找...... –
为什么不使用!对“overrided”css重要,然后内联样式被忽略 – Hacketo