Как сбросить или переопределить фильтры IE CSS?


89

Я использую собственное свойство MS 'filter', чтобы попытаться создать не уродливый эквивалент css3 text-shadow и box-shadow;

У меня действительно все было хорошо, пока я не столкнулся с этой проблемой. Похоже, что когда я применяю фильтр к div внутри другого div, у которого также есть фильтр, эффекты фильтра в конечном итоге объединяются в дочернем объекте.

Я пробовал использовать filter: none; сделать сброс но без радости. Я также пробовал разные варианты синтаксиса, например «-ms-filter: 'progid: ... Glow ()'», «filter: progid: ... Glow ()», «filter: Glow ()» , так далее..

Тестирование в IE8


8
У меня это работает:filter:;
Web_Designer 01

1
фильтр:; не работает с препроцессором lessphp css, filter: -; хотя делает.
David Meister

использовать filter: ;. это, я думаю, заставит IE удалить свойство полностью, поскольку это недопустимое значение.
Бхуми Сингхал

3
Используя SCSS, мне пришлось использовать, filter:none;чтобы избежать синтаксических ошибок.
Ник Барбье

Ответы:


95

Там это логический атрибут включен , для которого вы можете установить ложный или истинный http://msdn.microsoft.com/en-us/library/ms532997%28v=vs.85%29.aspx

Пример:

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

1
Спасибо! Это сработало для меня двоих. У меня был надоедливый стиль фона, который не исчезал, и я не мог его найти, как бы я ни старался.
racl101

Благодарность! градиентные фильтры для кнопок не очень хорошо сочетаются с определенными кнопками с фоновыми изображениями - фильтр накладывается на изображение ...
Адам,

Работал как шарм! Спасибо!
Богдан

20

Свойство -ms-filter является нестандартной записью CSS для конкретного браузера и, как таковое, требует, чтобы его параметр был заключен в кавычки. Итак, -ms-filter: "none" будет работать нормально.



6

Я добился определенного успеха, позиционируя детей как абсолютные или относительные. Раньше это не работало, поэтому может снова сломаться, когда я усложню

Я думаю, что после того, как родительский элемент применил фильтр, все его дочерние элементы по сути становятся внутренними поверхностями directx. Вы все еще можете выделить текст, но он отстает. Я думаю, что выделение текста - это хитрость, которая делает каждую букву отдельной поверхностью. Это дерьмовый беспорядок, который во многом объясняет, почему браузер в целом и фильтры в частности так глючны.


6

Если вы используете HTML5, вы можете пойти по пути использования

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

и в вашем CSS используйте что-то вроде:

.ie9 .element {filter: none; }


0

Я нашел лучший способ - display: inline-block (применяя white-space: nowrap к контейнеру). Но вроде плохо работает с IE7 и ниже

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.