Comment appliquer un style à une zone de saisie vide? Si l'utilisateur tape quelque chose dans le champ de saisie, le style ne devrait plus être appliqué. Est-ce possible en CSS? J'ai essayé ceci:
input[value=""]
Comment appliquer un style à une zone de saisie vide? Si l'utilisateur tape quelque chose dans le champ de saisie, le style ne devrait plus être appliqué. Est-ce possible en CSS? J'ai essayé ceci:
input[value=""]
Dans les navigateurs modernes, vous pouvez utiliser :placeholder-shown
pour cibler l'entrée vide (à ne pas confondre avec ::placeholder
).
input:placeholder-shown {
border: 1px solid red; /* Bordure rouge uniquement si l'entrée est vide */
}
En HTML, vous devez définir l'attribut placeholder. Le navigateur Chrome nécessite au moins un caractère d'espace en tant que valeur.
Je veux la même chose, mais mon champ n'est pas obligatoire. Est-il possible de le faire quand même ?
Pour toute personne trouvant cette réponse plus tard: Quentin a raison concernant les valeurs calculées, cependant il existe le sélecteur :empty qui pourrait être utilisé ici et qui bénéficie d'un support raisonnable (tous les navigateurs sauf IE8 et les versions antérieures selon: w3schools.com/cssref/sel_empty.asp
:empty
le sélecteur fonctionne uniquement sur les éléments vides, c'est-à-dire uniquement sur les éléments qui ont une balise d'ouverture et de fermeture qui est vide entre elles, et les éléments à balise unique qui sont toujours considérés comme vides, exemple, donc il ne peut pas être utilisé sur les éléments input à l'exception de textarea
Pas vrai. Voir la réponse de lukmo ci-dessous. Combiner l'attribut requis et les sélecteurs pseudo :valid ou :invalid permet d'obtenir exactement cela.
La mise à jour de la valeur d'un champ ne met pas à jour son attribut de valeur dans le DOM, c'est pourquoi votre sélecteur correspond toujours à un champ, même lorsqu'il n'est pas réellement vide.
Utilisez plutôt la pseudo-classe :invalid
pour obtenir ce que vous voulez, comme ceci :
input:required {
border: 1px solid green;
}
input:required:invalid {
border: 1px solid red;
}
Pas fiable car la valeur de l'attribut n'est pas modifiée dans le DOM après une modification de champ. Cependant, une astuce intéressante si cela ne vous dérange pas - et fonctionne dans les dernières versions de Safari, Chrome, FF et IE...
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.