Я нашел решение, но оно является матерью всех хаков, надеюсь, оно послужит отправной точкой для других более надежных решений.Недостатком (на мой взгляд, слишком большим) является то, что любой браузер, который не поддерживает 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;
}
Наслаждайтесь.