Jak zresetować lub zastąpić filtry CSS w przeglądarce IE?


89

Używam zastrzeżonej właściwości „filter” MS, aby spróbować stworzyć nie brzydki odpowiednik css3 text-shadow i box-shadow;

Właściwie szło mi naprawdę dobrze, dopóki nie napotkałem tego problemu. Wygląda na to, że gdy zastosuję filtr do elementu div wewnątrz innego elementu div, który również ma filtr, efekty filtru zostaną połączone na obiekcie podrzędnym.

Próbowałem użyć filtra: brak; zrobić reset, ale bez radości. Próbowałem też różnych odmian składni, np. „-Ms-filter: 'progid: ... Glow ()'", "filter: progid: ... Glow ()", "filter: Glow ()" itp.

Testowanie w IE8


8
To działa dla mnie:filter:;
Web_Designer

1
filtr:; nie działa z preprocesorem css lessphp, filtruj: -; chociaż.
David Meister

używać filter: ;. to chyba zmusi IE do usunięcia tej właściwości razem, ponieważ nie jest to poprawna wartość.
Bhumi Singhal,

3
Używając SCSS, musiałem użyć, filter:none;aby uniknąć błędów składniowych.
Nic Barbier

Odpowiedzi:


95

Jest włączony atrybut boolean , dla którego można ustawić wartość false lub true http://msdn.microsoft.com/en-us/library/ms532997%28v=vs.85%29.aspx

Przykład:

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

1
Dziękuję Ci! To zadziałało dla mnie dwóch. Miałem nieznośny styl tła, który nie zniknął i nie mogłem go znaleźć bez względu na to, jak bardzo się starałem.
racl101

Dzięki! filtry gradientowe dla przycisków nie grają ładnie z niektórymi przyciskami z obrazami w tle - filtr pojawia się na obrazie ...
Adam

Działał jak urok! Dziękuję Ci!
Bogdan

20

Właściwość -ms-filter jest niestandardowym wpisem CSS specyficznym dla przeglądarki i jako taka wymaga, aby jej parametr był ujęty w cudzysłów. Więc -ms-filter: "none" będzie działać dobrze.



6

Odniosłem pewien sukces, ustawiając dzieci jako bezwzględne lub względne. To nie wydawało się działać wcześniej, więc może się ponownie zepsuć, gdy stanę się bardziej skomplikowany

Myślę, że gdy rodzic zastosuje filtr, wszystkie jego dzieci zasadniczo stają się wewnętrznie powierzchniami directx. Nadal możesz zaznaczyć tekst, ale jest on opóźniony. Myślę, że zaznaczanie tekstu to sztuczka, która sprawia, że ​​każda litera jest oddzielną powierzchnią. To gówniany bałagan, który w dużym stopniu wyjaśnia, dlaczego przeglądarka w ogóle, a filtry w szczególności, są tak błędne.


6

Jeśli używasz HTML5, możesz zechcieć przejść dalej ścieżką używania

<!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]-->

aw swoim CSS użyj czegoś takiego:

.ie9 .element {filter: none; }


0

Znalazłem najlepszy sposób wyświetlania: inline-block (zastosowanie spacji: nowrap do kontenera). Ale wydaje się, że działa źle z IE7 i niższymi

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.