Просто наткнулся на этот вопрос, вот что работает в FireFox & Chrome (по крайней мере)
<style>
select:invalid { color: gray; }
</style>
<form>
<select required>
<option value="" disabled selected hidden>Please Choose...</option>
<option value="0">Open when powered (most valves do this)</option>
<option value="1">Closed when powered, auto-opens when power is cut</option>
</select>
</form>
Опция Отключено останавливает выбор <option>
с помощью мыши и клавиатуры, тогда как простое использование 'display:none'
позволяет пользователю по-прежнему выбирать с помощью стрелок на клавиатуре.Стиль 'display:none'
просто делает окно списка «красивым».
Примечание. Использование пустого атрибута value
в опции «placeholder» позволяет валидации (обязательному атрибуту) обойти наличие «placeholder», так что если опция не изменена, но обязательна;браузер должен предложить пользователю выбрать опцию из списка.
Обновление (июль 2015 г.):
Этот метод подтвержден работой в следующих браузерах:
- Google Chrome - v.43.0.2357.132
- Mozilla Firefox - v.39.0
- Safari - v.8.0.7 (Заполнитель отображается в раскрывающемся списке, но его нельзя выбрать)
- Microsoft Internet Explorer - v.11 (Заполнитель отображается в раскрывающемся списке, но его нельзя выбрать)
- Project Spartan - v.15.10130 (Заполнитель отображается в раскрывающемся списке, но его нельзя выбрать)
Обновление (октябрь 2015 г.):
Удален style="display: none"
в пользу атрибута HTML5 hidden
, который имеет широкую поддержку.Элемент hidden
имеет признаки, аналогичные display: none
в Safari, IE, (Project Spartan нуждается в проверке), где option
отображается в раскрывающемся списке, но его нельзя выбрать.
Обновление (январь 2016 г.)):
Когда элемент select
равен required
, он позволяет использовать псевдокласс :invalid
CSS, который позволяет стилизовать элемент select
в состоянии «заполнитель»,:invalid
работает здесь из-за пустого значения в заполнителе option
.
После установки значения псевдокласс :invalid
будет удален.При желании вы также можете использовать :valid
, если хотите.
Большинство браузеров поддерживают этот псевдокласс.IE10 +.Это лучше всего работает с пользовательскими элементами select
;В некоторых случаях, т. Е. (Mac в Chrome / Safari), вам необходимо изменить внешний вид по умолчанию для поля select
, чтобы отображались определенные стили, например background-color
, color
.Вы можете найти некоторые примеры и больше о совместимости на developer.mozilla.org .
Внешний вид родного элемента Mac в Chrome:
Использование измененного элемента границы Mac в Chrome: