Mit Mozilla und WebKit habe ich also eine halbwegs anständige Lösung, bei der der Pfeil auf der select
Box durch appearance: none;
ein übergeordnetes Element ersetzt wird.
Im IE habe ich diese Funktion größtenteils deaktiviert. Für IE10 kann ich es nicht deaktivieren, da meine bedingten Kommentare nicht funktionieren.
Hier ist mein Markup:
<!--[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]-->
Die Klasse ie10plus
schafft es nicht wirklich zum Markup.
Ich habe auch das Gefühl, dass es einen legitimen Weg gibt, den Pfeil im IE zu ersetzen. Ich bin nicht dagegen, das Problem tatsächlich zu beheben. appearance: none;
funktioniert jedoch nicht. Was kann ich hier tun?
Antworten:
Vermeiden Sie Browser-Sniffing und bedingte Kommentare (die ab Internet Explorer 10 nicht mehr unterstützt werden) und verwenden Sie stattdessen einen Standardansatz. Bei diesem speziellen Problem sollten Sie auf das
::-ms-expand
Pseudoelement abzielen :select::-ms-expand { display: none; }
quelle
Aber!, Wenn wir Breite hinzufügen möchten, können wir dies nicht tun als:
display:none
Damit
select::-ms-expand { /* IE 8 */ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; /* IE 5-7 */ filter: alpha(opacity=0); /* Good browsers :) */ opacity:0; }
quelle
Internet Explorer 10 unterstützt keine bedingten Kommentare , daher müssen Sie etwas anderes tun. Eine Lösung besteht darin, den Benutzeragenten mit JavaScript zu beschnüffeln und die Klasse selbst hinzuzufügen:
<script> if (navigator.userAgent.indexOf("MSIE 10.0") !== -1) { document.documentElement.className += " ie10"; } </script>
Sie sollten dies wahrscheinlich in hinzufügen,
<head>
damit Sie keinen Flash mit nicht gestylten Inhalten haben, aber das ist möglicherweise kein Problem.Wenn Sie jQuery verwenden, möchten Sie möglicherweise Folgendes tun:
if (navigator.userAgent.indexOf("MSIE 10.0") !== -1) { $("html").addClass("ie10"); }
Wenn Sie nach IE10 oder höher suchen möchten, kopieren Sie die
getInternetExplorerVersion
Funktion von dieser Microsoft-Seite und fügen Sie sieif
in etwa so ein:if (getInternetExplorerVersion() >= 10) { // whatever implementation you choose }
quelle
Ich hatte ein Problem mit einem versteckten Dropdown-Pfeil auf der Site in IE 10 und 11, an dem ich arbeite und der die Zurb Foundation verwendet . Es gab eine Zeile auf der _form.scss, die hatte
select::-ms-expand { display: none; }
Ich entfernte es und der Dropdown-Pfeil wurde auf allen Browsern normal angezeigt. Danke Jonathan für deine Antwort hier. Dies hat mir geholfen, nachdem ich viel nach einer Lösung gesucht hatte.
quelle
Ich bin mir immer noch nicht sicher, was Sie erreichen möchten, aber dies erkennt und fügt eine Klasse für ie10 hinzu:
<!--[if !IE]><!--<script> if (/*@cc_on!@*/false) { document.documentElement.className+=' ie10plus'; } </script>!--<![endif]-->
quelle