Ich habe eine Lösung gefunden, aber sie ist die Mutter aller Hacks. Hoffentlich dient sie als Ausgangspunkt für andere robustere Lösungen. Der Nachteil (meiner Meinung nach zu groß) ist, dass jeder Browser, der nicht unterstützttext-shadow
aber unterstützt rgba
(IE 9), den Text nur dann rendert, wenn Sie eine Bibliothek wie Modernizr verwenden (nicht getestet, nur eine Theorie).
Firefox verwendet die Textfarbe, um die Farbe des gepunkteten Rahmens zu bestimmen. Sagen Sie also, wenn Sie ...
select {
color: rgba(0,0,0,0);
}
Firefox macht den gepunkteten Rand transparent. Aber natürlich ist Ihr Text auch transparent! Also müssen wir den Text irgendwie anzeigen. text-shadow
kommt zur Rettung:
select {
color: rgba(0,0,0,0);
text-shadow: 0 0 0 #000;
}
Wir setzen einen Textschatten ohne Versatz und ohne Unschärfe, so dass der Text ersetzt wird. Natürlich verstehen ältere Browser nichts davon, daher müssen wir einen Fallback für die Farbe bereitstellen:
select {
color: #000;
color: rgba(0,0,0,0);
text-shadow: 0 0 0 #000;
}
Dies ist, wenn IE9 ins Spiel kommt: Es unterstützt, rgba
aber keinen Textschatten, so dass Sie ein scheinbar leeres Auswahlfeld erhalten. Holen Sie sich Ihre Version von Modernizr mit text-shadow
Erkennung und tun Sie ...
.no-textshadow select {
color: #000;
}
Genießen.