2012-03-15 10 views
7

Se una proprietà di stile elemento è importante (impostata tramite style="" o JS), come è possibile rimuoverla?Come si può rimuovere una proprietà CSS importante?

removeProperty() non funziona (jsfiddle):

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

(preferibilmente una soluzione frameworkless, ha solo lavorare in Chrome.)

risposta

13

Il motivo non è possibile rimuovere la proprietà è perché è una proprietà stenografica.

Quando lo si imposta, altre proprietà vengono effettivamente aggiunte, ma non la proprietà "background", quindi non c'è la proprietà "background" da rimuovere.

In questo caso, è possibile disinserire in questo modo:

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

In generale, avresti bisogno di disinserire ogni "lunga mano" proprietà rappresentato dalla proprietà abbreviata.


Si potrebbe anche fare questo per sovrascrivere:

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

Oppure si potrebbe bombardare l'intero stile in linea per l'elemento in questo modo:

elem.style.cssText = ''; 
+1

Interessante tho che ' removeProperty ('background') 'funziona se non è stato impostato con' important'. – Qtax

+0

Grande, 'cssText' sarà utile nel mio caso. +2 ;-) – Qtax

+1

Sembra che la rimozione delle proprietà abbreviate rimuoverà tutte le proprietà "longhand" corrispondenti che non sono state impostate come "importanti". Quelli impostati come 'importanti '(direttamente come proprietà di longhand o tramite una proprietà di stenografia) sembrano essere stati rimossi esplicitamente. Non ho trovato un riferimento per supportare questo, ma suppongo che sia di progettazione. –

Problemi correlati