2012-03-15 96 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