74 votes

Suppression de la flèche d'élément de sélection IE10

Donc, avec Mozilla et WebKit, j'ai une demi-décent solution de remplacement de la flèche sur l' select boîte à l'aide de appearance: none; et ayant un élément parent.

Dans IE, pour la plupart, j'ai désactivé cette fonctionnalité. Pour IE10 je ne peux pas vraiment le désactiver depuis mes commentaires conditionnels ne fait pas travailler.

Voici mon balisage:

<!--[if lt IE 7 ]> <html class="ie6"> <![endif]-->
<!--[if IE 7 ]>    <html class="ie7"> <![endif]-->
<!--[if IE 8 ]>    <html class="ie8"> <![endif]-->
<!--[if IE 9 ]>    <html class="ie9"> <![endif]-->
<!--[if (gt IE 9)]>    <html class="ie10plus"> <![endif]-->
<!--[if !(IE)]><!--> <html> <!--<![endif]-->

La classe ie10plus n'est pas réellement faire son chemin jusqu'à la balise.

J'ai aussi l'impression que il y a peut être un moyen légitime pour remplacer la flèche dans IE. Je ne suis pas opposé à réellement régler le problème. appearance: none; , cependant, ne fonctionne pas. Que puis-je faire ici?

293voto

Jonathan Sampson Points 121800

Évitez les commentaires conditionnels (qui ne sont pas pris en charge à partir d'Internet Explorer 10) avec la recherche de navigateur, mais adoptez une approche plus standard. Avec ce problème particulier, vous devriez cibler le pseudo-élément ::-ms-expand :

 select::-ms-expand {
    display: none;
}
 

2voto

Sergey Points 1

Mais !, Si nous voulons ajouter de la largeur, nous ne pouvons pas le faire de la manière suivante:

display:none

Alors

 select::-ms-expand {
 /* IE 8 */
 -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
 /* IE 5-7 */
 filter: alpha(opacity=0);
 /* Good browsers :) */
 opacity:0;
}
 

1voto

Evan Hahn Points 2317

Internet Explorer 10 ne prend pas en charge les commentaires conditionnels, de sorte que vous aurez à faire quelque chose d'autre. Une solution est de renifler l'agent utilisateur avec JavaScript et ajouter la classe vous-même:

<script>
if (navigator.userAgent.indexOf("MSIE 10.0") !== -1) {
    document.documentElement.className += " ie10";
}
</script>

Vous devriez probablement ajouter ceci dans l' <head> , de sorte que vous n'avez pas de flash de non stylé contenu, mais qui pourrait ne pas être un problème.

Aussi, si vous êtes à l'aide de jQuery, vous pouvez faire quelque chose comme ceci:

if (navigator.userAgent.indexOf("MSIE 10.0") !== -1) {
    $("html").addClass("ie10");
}

Si vous voulez vérifier pour IE10 ou au-dessus, copiez-collez l' getInternetExplorerVersion fonction à partir de cette page Microsoft et ensuite modifier l' if à quelque chose comme ceci:

if (getInternetExplorerVersion() >= 10) {
    // whatever implementation you choose
}

0voto

ranjeesh Points 11

J'ai eu un problème avec une flèche déroulante cachée sur le site sur IE 10 et 11 que je travaille et qui utilise la Fondation Zurb . Il y avait une ligne sur le _form.scss qui avait

 select::-ms-expand {
    display: none;
}
 

Je l'ai enlevé et la flèche du menu déroulant a commencé à apparaître normalement sur tous les lecteurs. Merci Jonathan pour votre réponse ici. Cela m'a aidé après avoir beaucoup cherché une solution.

-1voto

albert Points 5329

toujours pas sûr de ce que vous essayez d'accomplir, mais cela détectera et ajoutera une classe pour ie10:
<!--[if !IE]><!--<script> if (/*@cc_on!@*/false) { document.documentElement.className+=' ie10plus'; } </script>!--<![endif]-->

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X