2012-03-15 13 views
7

Si una propiedad de estilo de elemento es importante (establecer a través de style="" o JS), ¿cómo se puede eliminar?¿Cómo se puede eliminar una propiedad importante de CSS?

removeProperty() no funciona (jsfiddle):

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

(preferiblemente una solución frameworkless, sólo tiene que funcionar en Chrome.)

Respuesta

13

La razón por la que no se puede quitar la propiedad se debe a es una propiedad taquigráfica.

Cuando lo configura, otras propiedades realmente se agregan, pero no hay propiedades de "fondo", por lo que no hay ninguna propiedad de "fondo" para eliminar.

En este caso, se puede desarmar así:

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

En general, que había necesidad de desarmar cada propiedad "de largo a mano", representada por la propiedad rápida.


También puede hacer esto sobreescribirla:

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

O usted podría bombardear todo el estilo en línea para el elemento de la siguiente manera:

elem.style.cssText = ''; 
+1

aunque interesante que ' removeProperty ('background') 'funciona si no se configuró con' important'. – Qtax

+0

Genial, 'cssText' será útil en mi caso. +2 ;-) – Qtax

+1

Parece que la eliminación de las propiedades abreviadas eliminará todas las propiedades "a mano" correspondientes que no se hayan establecido como 'importantes'. Los que se establecen como 'importantes' (ya sea directamente como propiedades a mano alzada o mediante una propiedad abreviada) parecen tener que eliminarse explícitamente. No he encontrado una referencia para apoyar esto, pero supongo que es por diseño. –

Cuestiones relacionadas