Znalazłem rozwiązanie, ale jest matką wszystkich hacków, mam nadzieję, że posłuży jako punkt wyjścia dla innych, solidniejszych rozwiązań. Wadą (moim zdaniem zbyt dużym) jest to, że każda przeglądarka, która nie obsługuje, text-shadowale obsługuje rgba(IE 9), nie wyrenderuje tekstu, chyba że użyjesz biblioteki takiej jak Modernizr (nie przetestowana, tylko teoria).
Firefox używa koloru tekstu do określenia koloru przerywanej ramki. Więc powiedz, jeśli to zrobisz ...
select {
color: rgba(0,0,0,0);
}
Firefox wyrenderuje przerywaną ramkę jako przezroczystą. Ale oczywiście twój tekst też będzie przezroczysty! Musimy więc jakoś wyświetlić tekst. text-shadowprzychodzi na ratunek:
select {
color: rgba(0,0,0,0);
text-shadow: 0 0 0 #000;
}
Umieściliśmy cień tekstu bez przesunięcia i bez rozmycia, aby zastąpić tekst. Oczywiście starsza przeglądarka nic z tego nie rozumie, więc musimy zapewnić rezerwę dla koloru:
select {
color: #000;
color: rgba(0,0,0,0);
text-shadow: 0 0 0 #000;
}
Wtedy do gry wkracza IE9: obsługuje on, rgbaale nie obsługuje cień tekstu, więc otrzymasz pozornie puste pole wyboru. Pobierz swoją wersję Modernizr z text-shadowwykrywaniem i zrób ...
.no-textshadow select {
color: #000;
}
Cieszyć się.