2012-03-15 29 views
7

Nếu thuộc tính kiểu phần tử là quan trọng (đặt một trong hai máng style="" hoặc JS), làm cách nào để loại bỏ nó?Làm cách nào để bạn có thể xóa thuộc tính CSS quan trọng?

removeProperty() không hoạt động (jsfiddle):

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

(Tốt nhất một giải pháp frameworkless, nó chỉ có làm việc trong Chrome.)

Trả lời

13

Lý do bạn không thể loại bỏ tài sản là vì đó là một tài sản viết tắt.

Khi bạn đặt, các thuộc tính khác thực sự được thêm vào, nhưng không có thuộc tính "nền", do đó không có thuộc tính "nền" cần xóa.

Trong trường hợp này, bạn có thể bỏ cài nó như thế này:

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

Nói chung, bạn sẽ cần phải bỏ đặt hàng "dài tay" sở hữu đại diện bởi các tài sản viết tắt.


Bạn cũng có thể làm điều này để ghi đè lên nó:

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

Hoặc bạn có thể nuke toàn bộ phong cách nội tuyến cho các phần tử như thế này:

elem.style.cssText = ''; 
+1

Thú vị tho rằng ' removeProperty ('background') 'không hoạt động nếu nó không được thiết lập với' quan trọng'. – Qtax

+0

Tuyệt vời, 'cssText' sẽ hữu ích trong trường hợp của tôi. +2 ;-) – Qtax

+1

Dường như việc xóa thuộc tính viết tắt sẽ xóa tất cả các thuộc tính "longhand" tương ứng không được đặt là 'quan trọng'. Những cái được đặt là 'quan trọng' (hoặc trực tiếp như thuộc tính dài hoặc thông qua một thuộc tính viết tắt) dường như phải được loại bỏ một cách rõ ràng. Tôi đã không tìm thấy một tài liệu tham khảo để hỗ trợ này, nhưng tôi đoán nó bằng thiết kế. –

Các vấn đề liên quan