Je viens de tomber sur cette question, et voici ce qui fonctionne dans Firefox et Chrome (au moins) :
<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>
El Handicapés L'option arrête le <option>
étant sélectionné à la fois avec la souris et le clavier, alors qu'en utilisant seulement 'display:none'
permet à l'utilisateur de continuer à sélectionner via les flèches du clavier. Le site 'display:none'
Ce style permet simplement de donner un aspect "sympa" à la boîte de liste.
Remarque : L'utilisation d'un value
sur l'option "placeholder" permet à la validation (attribut requis) de contourner la présence du "placeholder". Ainsi, si l'option n'est pas modifiée, mais qu'elle est requise, le navigateur doit inviter l'utilisateur à choisir une option dans la liste.
Mise à jour (juillet 2015) :
Il est confirmé que cette méthode fonctionne dans les navigateurs suivants :
- Google Chrome - v.43.0.2357.132
- Mozilla Firefox - v.39.0
- Safari - v.8.0.7 (le caractère générique est visible dans la liste déroulante, mais il n'est pas sélectionnable)
- Microsoft Internet Explorer - v.11 (L'espace réservé est visible dans la liste déroulante mais ne peut pas être sélectionné)
- Project Spartan - v.15.10130 (le placeholder est visible dans la liste déroulante, mais il n'est pas sélectionnable)
Mise à jour (octobre 2015) :
J'ai retiré le style="display: none"
en faveur de l'attribut HTML5 hidden
qui bénéficie d'un large soutien. Le site hidden
a des caractéristiques similaires à celles de l'élément display: none
dans Safari, Internet Explorer, (Project Spartan doit être vérifié) où la option
est visible dans la liste déroulante, mais il n'est pas sélectionnable.
Mise à jour (janvier 2016) :
Lorsque le select
L'élément est required
il permet l'utilisation de la :invalid
pseudo-classe CSS qui vous permet de donner un style à l'élément select
lorsqu'il est dans son état "placeholder". :invalid
fonctionne ici en raison de la valeur vide dans l'espace réservé. option
.
Une fois qu'une valeur a été définie, le :invalid
la pseudo-classe sera abandonnée. Vous pouvez également utiliser :valid
si vous le souhaitez.
La plupart des navigateurs supportent cette pseudo-classe. Internet Explorer 10 et versions ultérieures. Cela fonctionne mieux avec les éléments de style personnalisés select
Dans certains cas, par exemple (Mac dans Chrome / Safari), vous devrez modifier l'apparence par défaut de l'élément select
pour que certains styles s'affichent, par exemple, background-color
y color
. Vous trouverez des exemples et d'autres informations sur la compatibilité à l'adresse suivante développeur.mozilla.org .
Apparition de l'élément natif Mac dans Chrome :
Utilisation de l'élément de bordure modifié Mac dans Chrome :
5 votes
Juste au cas où quelqu'un lirait ceci - j'ai posté une solution plus commune pour les navigateurs modernes avec la validation intégrée du navigateur. Bienvenue en 2020 ;)