2012-03-15 12 views
7

Jeśli właściwość stylu elementu jest ważna (należy ustawić za pomocą style="" lub JS), w jaki sposób można ją usunąć?Jak usunąć ważną właściwość CSS?

removeProperty() nie działa (jsfiddle):

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

(korzystnie roztwór frameworkless, ma pracować tylko w Chrome.)

Odpowiedz

13

Powodem nie można usunąć, ponieważ jest nieruchomość to jest skrócona własność.

Po ustawieniu inne właściwości są dodawane, ale nie ma właściwości "background", więc nie ma właściwości "background" do usunięcia.

W tym przypadku można rozbroić go tak:

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

Generalnie trzeba by rozbroić każdy „long-hand” własność reprezentowany przez obiekt skróconej.


Można też to zrobić, aby go zastąpić:

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

Albo można nuke całą stylu inline dla elementu jak ten:

elem.style.cssText = ''; 
+1

Ciekawe tho że ' removeProperty ('background') 'działa, jeśli nie zostało ustawione na' important'. – Qtax

+0

Dobrze, 'cssText' przyda się w moim przypadku. +2 ;-) – Qtax

+1

Wygląda na to, że usunięcie skróconych właściwości spowoduje usunięcie wszystkich odpowiednich "longhandowych" właściwości, które nie zostały ustawione jako "ważne". Te, które są ustawione jako "ważne" (albo bezpośrednio jako właściwości typu longhand, albo poprzez skróconą właściwość), wydają się być wyraźnie usunięte. Nie znalazłem odniesienia do obsługi tego, ale domyślam się, że jest to zgodne z projektem. –

Powiązane problemy