2009-11-20 34 views
88

Tôi đang sử dụng thuộc tính sở hữu MS 'filter' để thử và tạo ra một tương đương không xấu với css3 text-shadow và box-shadow;Làm cách nào để đặt lại hoặc ghi đè bộ lọc CSS của CSS?

Tôi đã thực sự làm rất tốt cho đến khi tôi gặp sự cố này. Có vẻ như khi tôi áp dụng một bộ lọc cho một div bên trong div khác mà cũng có một bộ lọc các hiệu ứng lọc cuối cùng được kết hợp trên đối tượng con.

Tôi không thể giải thích nó tốt hơn nhiều hơn thế, đây là một bản demo: http://cableflow.dev.arc.net.au/test/filters.html

Tôi đã thử sử dụng bộ lọc: none; để làm một thiết lập lại nhưng không có niềm vui. Tôi cũng đã thử các biến thể khác nhau về cú pháp, tức là "-ms-filter: 'progid: ... Glow()'", "filter: progid: ... Glow()", "filter: Glow()" , vv ..

Thử nghiệm trong IE8

+8

Điều này phù hợp với tôi: 'filter:;' –

+1

filter :; không hoạt động với bộ tiền xử lý css lessphp, bộ lọc: -; mặc dù vậy. –

+0

sử dụng 'filter:;'. điều này tôi đoán sẽ buộc IE để loại bỏ các tài sản tất cả cùng nhau vì nó không phải là một giá trị hợp lệ. –

Trả lời

6

Tôi đã có một số thành công bằng cách định vị trẻ em tuyệt đối hoặc tương đối. Điều này dường như không hoạt động sớm hơn, vì vậy nó có thể bị phá vỡ một lần nữa khi tôi trở nên phức tạp hơn

Tôi nghĩ rằng một khi cha mẹ có bộ lọc áp dụng tất cả các con, về cơ bản sẽ trở thành bề mặt trực tiếp trong nội bộ. Bạn vẫn có thể chọn văn bản nhưng văn bản bị chậm. Tôi nghĩ rằng lựa chọn văn bản là một hack mà làm cho mỗi chữ một bề mặt riêng biệt. Đó là một mớ hỗn độn rắc rối mà đi một chặng đường dài để giải thích lý do tại sao các trình duyệt nói chung và bộ lọc nói riêng là rất buggy.

+0

Làm việc cho tôi. Cảm ơn rất nhiều! – molf

1

Bạn đã thử enable/disable bộ lọc chưa?

+2

nó không hoạt động, bạn không thể ghi đè lên một bộ lọc cha mẹ từ đứa trẻ. – SpliFF

16

thử cách này:

bộ lọc: -;

+0

Làm việc cho tôi trong IE7 trong khi -ms-filter: "progid: DXImageTransform.Microsoft.gradient (enabled = false)"; không.Thx –

+0

@SimonArnold "-ms-filter" chỉ được hỗ trợ bởi IE8 trở lên; IE7 chỉ hỗ trợ thuộc tính "filter". Xem http://msdn.microsoft.com/en-us/library/ie/ms530752(v=vs.85).aspx. – vee

95

Có boolean thuộc tính kích hoạt, mà bạn có thể thiết lập sai hoặc đúng http://msdn.microsoft.com/en-us/library/ms532997%28v=vs.85%29.aspx

Ví dụ:

-ms-filter: "progid:DXImageTransform.Microsoft.gradient(enabled=false)"; 
+4

Đối với tôi điều này đã làm việc nhưng tôi đã phải sử dụng '! Quan trọng' –

+1

Cảm ơn bạn! Điều này làm việc cho tôi hai. Tôi đã có một phong cách nền pesky mà sẽ không biến mất và không thể tìm thấy nó không có vấn đề làm thế nào tôi đã cố gắng. – racl101

+0

Cảm ơn! bộ lọc gradient cho các nút không phát độc đáo với các nút nhất định có hình nền - bộ lọc đi qua hình ảnh ... – Adam

0

tôi đã tìm thấy cách tốt nhất là display: inline -block (áp dụng khoảng trắng: chèn vào thùng chứa). Nhưng có vẻ như để làm việc xấu với IE7 và thấp

6

Nếu bạn đang sử dụng HTML5 bạn có thể muốn đi xuống con đường của việc sử dụng

<!doctype html> 
<!--[if lt IE 7 ]> <html lang="en" class="ie6 oldie"> <![endif]--> 
<!--[if IE 7 ]> <html lang="en" class="ie7 oldie"> <![endif]--> 
<!--[if IE 8 ]> <html lang="en" class="ie8 oldie"> <![endif]--> 
<!--[if IE 9 ]> <html lang="en" class="ie9"> <![endif]--> 
<!--[if (gt IE 9)|!(IE)]><!--> 
<html lang="en" class="gtie9 modern"> 
<!--<![endif]--> 

và trong một cái gì đó sử dụng CSS của bạn như:

.ie9 .element {filter: none; } 
20

Thuộc tính -ms-filter là một mục nhập CSS không theo tiêu chuẩn, cụ thể cho trình duyệt và do đó yêu cầu tham số của nó được đính kèm với dấu ngoặc kép. So -ms-filter: "none" sẽ hoạt động tốt.

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