Я нашел решение, но это мать всех хаков, надеюсь, оно послужит отправной точкой для других более надежных решений. Обратной стороной (на мой взгляд, слишком большой) является то, что любой браузер, который не поддерживает, text-shadow
но поддерживает rgba
(IE 9), не будет отображать текст, если вы не используете такую библиотеку, как Modernizr (не тестировалось, просто теория).
Firefox использует цвет текста для определения цвета пунктирной границы. Так что скажи, если да ...
select {
color: rgba(0,0,0,0);
}
Firefox сделает пунктирную границу прозрачной. Но, конечно, ваш текст тоже будет прозрачным! Так что надо как-то отображать текст. text-shadow
приходит на помощь:
select {
color: rgba(0,0,0,0);
text-shadow: 0 0 0 #000;
}
Мы помещаем тень текста без смещения и размытия, так что текст заменяется. Конечно, старый браузер ничего из этого не понимает, поэтому мы должны предоставить запасной вариант для цвета:
select {
color: #000;
color: rgba(0,0,0,0);
text-shadow: 0 0 0 #000;
}
Это когда IE9 вступает в игру: он поддерживает, rgba
но не text-shadow, поэтому вы получите явно пустое поле выбора. Получите свою версию Modernizr с text-shadow
функцией обнаружения и ...
.no-textshadow select {
color: #000;
}
Наслаждаться.