我想創建一個使用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