J'ai trouvé une solution, mais elle est mère de tous les hacks, j'espère qu'elle servira de point de départ pour d'autres solutions plus robustes. L'inconvénient (trop gros à mon avis) est que tout navigateur qui ne prend pas en charge text-shadow
mais prend en charge rgba
(IE 9) ne rendra pas le texte à moins que vous n'utilisiez une bibliothèque telle que Modernizr (non testée, juste une théorie).
Firefox utilise la couleur du texte pour déterminer la couleur de la bordure pointillée. Alors dites si vous le faites ...
select {
color: rgba(0,0,0,0);
}
Firefox rendra la bordure pointillée transparente. Mais bien sûr, votre texte sera également transparent! Nous devons donc en quelque sorte afficher le texte. text-shadow
vient à la rescousse:
select {
color: rgba(0,0,0,0);
text-shadow: 0 0 0 #000;
}
Nous mettons une ombre de texte sans décalage et sans flou, ce qui remplace le texte. Bien sûr, les anciens navigateurs ne comprennent rien à cela, nous devons donc fournir une solution de secours pour la couleur:
select {
color: #000;
color: rgba(0,0,0,0);
text-shadow: 0 0 0 #000;
}
C'est à ce moment qu'IE9 entre en jeu: il prend en charge rgba
mais pas text-shadow, vous obtiendrez donc une boîte de sélection apparemment vide. Obtenez votre version de Modernizr avec text-shadow
détection et faites ...
.no-textshadow select {
color: #000;
}
Prendre plaisir.