J'utilise la propriété 'filter' de la propriété MS pour essayer de créer un équivalent non laid à css3 text-shadow et box-shadow;
J'allais vraiment bien jusqu'à ce que je rencontre ce problème. Il semble que lorsque j'applique un filtre à un div à l'intérieur d'un autre div qui a également un filtre, les effets de filtre finissent par être combinés sur l'objet enfant.
J'ai essayé d'utiliser le filtre: aucun; faire un reset mais pas de joie. J'ai également essayé différentes variantes de la syntaxe, à savoir "-ms-filter: 'progid: ... Glow ()'", "filter: progid: ... Glow ()", "filter: Glow ()" , etc..
Test dans IE8
J'ai eu un certain succès en positionnant les enfants de façon absolue ou relative. Cela ne semble pas avoir fonctionné plus tôt, donc cela risque de se casser à nouveau une fois que je serai plus compliqué
Je pense qu'une fois qu'un parent a appliqué un filtre, tous ses enfants deviennent essentiellement des surfaces Directx en interne. Vous pouvez toujours sélectionner du texte mais il est en retard. Je pense que la sélection de texte est un hack qui fait de chaque lettre une surface distincte. C'est un bordel de merde qui explique en grande partie pourquoi le navigateur en général et les filtres en particulier sont si bogués.
Il existe un attribut booléen activé, pour lequel vous pouvez définir false ou true http://msdn.Microsoft.com/en-us/library/ms532997%28v=vs.85%29.aspx
Exemple:
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(enabled=false)";
La propriété -ms-filter est une entrée CSS non standard spécifique au navigateur et, en tant que telle, requiert que son paramètre soit entouré de guillemets. Donc -ms-filter: "aucun" fonctionnera très bien.
essaye ça:
filtre: -;
Si vous utilisez HTML5, vous voudrez peut-être emprunter la voie de l'utilisation
<!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]-->
et dans votre CSS utilisez quelque chose comme:
.ie9 .element {filter: none; }
Avez-vous essayé de activer/désactiver le (s) filtre (s)?
J'ai trouvé que la meilleure façon était d'afficher: inline-block (en appliquant un espace blanc: nowrap au conteneur). Mais cela semble mal fonctionner avec IE7 et inférieur