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-shadow
ale 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-shadow
przychodzi 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, rgba
ale nie obsługuje cień tekstu, więc otrzymasz pozornie puste pole wyboru. Pobierz swoją wersję Modernizr z text-shadow
wykrywaniem i zrób ...
.no-textshadow select {
color: #000;
}
Cieszyć się.