2012-03-15 106 views
7

如果元素樣式屬性很重要(設置谷style=""或JS),如何刪除它?如何刪除重要的CSS屬性?

removeProperty()不起作用(jsfiddle):

elem.style.setProperty('background', '#faa', 'important'); 
elem.style.removeProperty('background'); // doesn't work 

(最好是frameworkless的解決方案,它只有在Chrome工作。)

回答

13

不能刪除該屬性的原因是因爲這是一個速記屬性。

當你設置它時,其他屬性實際上被添加,但沒有「背景」屬性,所以沒有「背景」屬性可以刪除。

在這種情況下,你可以取消它是這樣的:

elem.style.removeProperty('background-color'); 

一般情況下,你需要取消由速記屬性表示每一個「長手」屬性。


你也可以這樣做是爲了覆蓋它:

elem.style.setProperty('background', 'inherit', 'important'); 

或者你可以用核武器炸整個內嵌樣式像這樣的元素:

elem.style.cssText = ''; 
+1

有趣壽說' removeProperty('background')'如果沒有用'important'設置,它就會工作。 – Qtax 2012-03-15 02:52:10

+0

太好了,'cssText'對我來說很有用。 +2 ;-) – Qtax 2012-03-15 03:12:39

+1

看來,刪除速記屬性將刪除所有未設置爲「important」的相應「longhand」屬性。那些被設置爲「重要」(直接作爲longhand屬性或通過速記屬性)的東西似乎必須明確地刪除。我沒有找到支持這一點的參考,但我猜是按設計。 – 2012-03-15 03:14:45