Quel est un bon moyen de surmonter le fait regrettable que ce code ne fonctionnera pas comme souhaité:
<div class="required">
<label>Name:</label>
<input type="text">
</div>
<style>
.required input:after { content:"*"; }
</style>
Dans un monde parfait, tous les input
s requis recevraient le petit astérisque indiquant que le champ est obligatoire. Cette solution est impossible puisque le CSS est inséré après le contenu de l'élément, pas après l'élément lui-même, mais quelque chose comme ça serait idéal. Sur un site avec des milliers de champs obligatoires, je peux déplacer l'astérisque devant l'entrée avec une modification sur une ligne ( :after
vers :before
) ou je peux le déplacer vers la fin de l'étiquette ( .required label:after
) ou devant l'étiquette, ou vers une position sur la boîte contenant, etc ...
Ceci est important non seulement au cas où je changerais d'avis sur l'endroit où placer l'astérisque partout, mais aussi pour les cas étranges où la mise en page du formulaire ne permet pas l'astérisque à la position standard. Il joue également bien avec la validation qui vérifie le formulaire ou met en évidence les contrôles mal complétés.
Enfin, cela n'ajoute pas de balisage supplémentaire.
Existe-t-il de bonnes solutions qui présentent tous ou la plupart des avantages du code impossible?
la source
required
attribut à<input...
developer.mozilla.org/en-US/docs/Web/HTML/Element/input/…Réponses:
Est-ce ce que tu avais en tête?
http://jsfiddle.net/erqrN/1/
Afficher l'extrait de code
Voir https://developer.mozilla.org/en-US/docs/Web/CSS/pseudo-elements
la source
*
mais cela signifierait que je devrais mettre manuellement la distance pour chaque longueur de saisie de formulaire, et que je ne pourrais pas avoir d'entrées flexibles.Jouez avec votre structure exacte: http://jsfiddle.net/bQ859/
la source
Bien que ce soit la réponse acceptée, veuillez m'ignorer et utiliser la
:after
syntaxe suggérée ci-dessous. Ma solution n'est pas accessible.Un résultat similaire pourrait être obtenu en utilisant une image d'arrière-plan d'une image d'un astérisque et en définissant l'arrière-plan de l'étiquette / de l'entrée / du div externe et un remplissage de la taille de l'image de l'astérisque. Quelque chose comme ça:
Cela placera l'astérisque À L'INTÉRIEUR de la zone de texte, mais en le mettant au
div.required
lieu de.required input
sera probablement plus ce que vous recherchez, même s'il est un peu moins élégant.Cette méthode ne nécessite pas d'entrée supplémentaire.
la source
Pour le mettre exactement dans l'entrée comme il est montré sur l'image suivante:
J'ai trouvé l'approche suivante:
Le site sur lequel je travaille est codé en utilisant une mise en page fixe, donc ça me convenait.
Je ne suis pas sûr que ce soit bon pour la conception liquide.
la source
écrire en CSS
et HTML
la source
<label class="control-label">...</label>
. Mais ça fait le boulot (Y)la source
radial-gradient
termesbackground-image
? Je ne peux pas faire en sorte que cette syntaxe se marie avec developer.mozilla.org/en-US/docs/Web/CSS/radial-gradient, mais fonctionne correctement lorsque je l'essaye.L'image a un espace d'environ 20 pixels sur la droite pour ne pas se chevaucher avec la flèche de sélection de la liste déroulante
Et ça ressemble à ça:
la source
Utilisez jQuery et CSS
la source
Je pense que c'est le moyen efficace de faire, pourquoi tant de maux de tête
la source
Nous sommes en 2019 et les réponses précédentes à ce problème n'utilisent pas
La grille CSS est le moyen de créer des formulaires en 2019, car vous pouvez faire précéder vos entrées de vos étiquettes sans avoir de div supplémentaires, de portées, de portées avec des astérisques et d'autres reliques.
Voici où nous allons avec un CSS minimal:
Le HTML pour ce qui précède:
Le texte d'espace réservé peut également être ajouté et est fortement recommandé. (Je réponds juste à cette mi-forme).
Maintenant pour les variables CSS:
Le CSS pour les éléments du formulaire:
Le formulaire lui-même doit être dans la grille CSS:
Les valeurs des colonnes peuvent être définies sur
1fr auto
ou1fr
avec quelque chose comme<p>
balises du formulaire définies sur span 1 / -1. Vous modifiez les variables dans vos requêtes multimédias afin que les zones de saisie deviennent pleine largeur sur mobile et comme indiqué ci-dessus sur le bureau. Vous pouvez également modifier votre espace de grille sur mobile si vous le souhaitez en utilisant l'approche des variables CSS.Lorsque les cases sont valides, vous devriez obtenir une coche verte au lieu de l'astérisque.
Le SVG en CSS est un moyen d'éviter au navigateur d'avoir à faire un aller-retour vers le serveur pour obtenir une image de l'astérisque. De cette façon, vous pouvez affiner les astérisques, les exemples ici sont à un angle inhabituel, vous pouvez le modifier car l'icône SVG ci-dessus est entièrement lisible. La zone de visualisation peut également être modifiée pour placer l'astérisque au-dessus ou en dessous du centre.
la source
la source
Cet exemple place un astérisque devant une étiquette pour désigner cette entrée particulière comme un champ obligatoire. J'ai défini les propriétés CSS à l'aide de% et em pour m'assurer que ma page Web est réactive. Vous pouvez utiliser px ou d'autres unités absolues si vous le souhaitez.
la source
Ce dont vous avez besoin est: sélecteur requis - il sélectionnera tous les champs avec l'attribut «requis» (donc pas besoin d'ajouter des classes supplémentaires). Ensuite, modifiez les entrées en fonction de vos besoins. Vous pouvez utiliser le sélecteur ': after' et ajouter un astérisque de la manière suggérée parmi d'autres réponses
la source
Vous pouvez obtenir le résultat souhaité en encapsulant le code HTML dans une balise div qui contient la classe "required" suivie de la classe "form-group". * Cependant, cela ne fonctionne que si vous avez Bootstrap.
la source
Pour ceux qui finissent ici, mais qui ont jQuery:
la source