Forms

Exemples et directives dutilisation des styles de contrôle de formulaire, des options de mise en page et des composants personnalisés pour créer une grande variété de formulaires.

Présentation

Les contrôles de formulaire de Bootstrap développent nos styles de formulaire redémarrés avec des classes. Utilisez ces classes pour activer leurs affichages personnalisés pour un rendu plus cohérent entre les navigateurs et les appareils.

Veillez à utiliser un attribut type approprié sur toutes les entrées (par exemple , email pour ladresse e-mail ou number pour les informations numériques) pour tirer parti des nouveaux contrôles de saisie tels que la vérification des e-mails, la sélection du numéro, etc.

Voici un exemple rapide pour illustrer les styles de formulaire de Bootstrap. Continuez à lire pour obtenir de la documentation sur les classes requises, la mise en page du formulaire, etc.

Contrôles de formulaire

Noubliez pas dexplorer nos formulaires personnalisés pour un style plus approfondi <select> s.

Pour les entrées de fichier, remplacez .form-control par .form-control-file.

Dimensionnement

Définissez les hauteurs à laide de classes telles que .form-control-lg et .form-control-sm.

Lecture seule

Ajoutez le readonly attribut booléen sur une entrée pour empêcher la modification de la valeur de lentrée. Les entrées en lecture seule semblent plus claires (tout comme les entrées désactivées), mais conservent le curseur standard.

Texte brut en lecture seule

Si vous souhaitez avoir des éléments <input readonly> dans votre formulaire sous forme de texte brut, utilisez .form-control-plaintext pour supprimer le style de champ de formulaire par défaut et conserver la marge et le remplissage corrects.

Cases à cocher et radios

Par défaut les cases à cocher et les radios sont améliorées à laide de .form-check, une classe unique pour les deux types dentrée qui améliore la présentation et le comportement de leurs éléments HTML. Les cases à cocher permettent de sélectionner une ou plusieurs options dans une liste, tandis que les radios permettent de sélectionner une option parmi plusieurs.

Les cases à cocher et les radios désactivées sont prises en charge, mais pour fournir un not-allowed curseur au survol du parent <label>, vous devrez ajouter lattribut disabled à .form-check-input. Lattribut désactivé appliquera une couleur plus claire pour aider à indiquer létat de lentrée.

Les cases à cocher et les radios utilisées sont conçues pour prendre en charge la validation de formulaire HTML et fournir des étiquettes concises et accessibles. En tant que tels, nos <input> et <label> sont des éléments frères par opposition à un <input> dans un <label>. Ceci est légèrement plus détaillé car vous devez spécifier les attributs id et for pour associer les <input> et <label>.

Par défaut (empilé)

Par défaut, nimporte quel nombre de cases à cocher et de radios qui sont des frères immédiats seront empilés verticalement et correctement espacé avec .form-check.

Case à cocher par défaut
Case à cocher désactivée

Radio par défaut
Deuxième radio par défaut
Radio désactivée

Inline

Regroupez les cases à cocher ou les radios sur la même ligne horizontale en ajoutant .form-check-inline à nimporte quel .form-check.

1
2
3 (désactivé)

1
2
3 (désactivé)

Sans libellés

Ajoutez .position-static aux entrées de .form-check qui nont pas de texte détiquette. Noubliez pas de toujours fournir une forme détiquette pour les technologies dassistance (par exemple, en utilisant aria-label).

Disposition

Puisque Bootstrap applique display: block et width: 100% à presque tous nos contrôles de formulaire , les formulaires sempileront par défaut verticalement. Des classes supplémentaires peuvent être utilisées pour faire varier cette mise en page pour chaque formulaire.

Groupes de formulaires

La classe .form-group est le moyen le plus simple pour ajouter de la structure aux formulaires. Il fournit une classe flexible qui encourage le regroupement approprié des étiquettes, des contrôles, du texte daide facultatif et des messages de validation de formulaire. Par défaut, il napplique que margin-bottom, mais il récupère des styles supplémentaires dans .form-inline si nécessaire. Utilisez-le avec des <fieldset>, des <div> ou presque tout autre élément.

Grille de formulaire

Des formulaires plus complexes peuvent être construits en utilisant nos classes de grille. Utilisez-les pour les mises en page de formulaire qui nécessitent plusieurs colonnes, des largeurs variées et des options dalignement supplémentaires.

Ligne de formulaire

Vous pouvez également échanger .row pour .form-row, une variante de notre ligne de grille standard qui remplace les gouttières de colonne par défaut pour des mises en page plus serrées et plus compactes.

Des mises en page plus complexes peuvent également être créées avec le système de grille.

Forme horizontale

Créez des formes horizontales avec la grille en ajoutant la classe .row pour former des groupes et en utilisant le .col-*-* pour spécifier la largeur de vos libellés et contrôles. Veillez également à ajouter .col-form-label à vos <label> afin quils soient centrés verticalement avec leurs contrôles de formulaire associés.

Parfois, vous devrez peut-être utiliser des utilitaires de marge ou de remplissage pour créer lalignement parfait dont vous avez besoin. Par exemple, nous avons supprimé padding-top sur notre étiquette dentrées radio empilées pour mieux aligner la ligne de base du texte.

Étiquette de formulaire horizontal dimensionnement

Dimensionnement des colonnes

Comme indiqué dans les exemples précédents, notre système de grille vous permet de placer nimporte quel nombre de .col s dans un .row ou .form-row. Ils répartiront la largeur disponible de manière égale entre eux. Vous pouvez également choisir un sous-ensemble de vos colonnes pour occuper plus ou moins despace, tandis que les .col restants répartissent également le reste, avec des classes de colonnes spécifiques telles que .col-7.

Auto-dimensionnement

Lexemple ci-dessous utilise un utilitaire flexbox pour centrer verticalement le contenu et les modifications .col à .col-auto afin que vos colonnes noccupent que lespace nécessaire. En dautres termes, la colonne se taille elle-même en fonction du contenu.

Vous pouvez ensuite remixer cela à nouveau avec des classes de colonnes spécifiques à la taille.

Et bien sûr, les contrôles de formulaire personnalisés sont pris en charge.

Formulaires en ligne

Utilisez .form-inline classe pour afficher une série détiquettes, de contrôles de formulaire et de boutons sur une seule ligne horizontale. Les contrôles de formulaire dans les formulaires en ligne diffèrent légèrement de leur état par défaut.

  • Les contrôles sont display: flex, réduisant tout espace blanc HTML et vous permettant de fournir un contrôle dalignement avec les utilitaires despacement et de flexbox.
  • Les contrôles et les groupes dentrée reçoivent width: auto pour remplacer la valeur par défaut de Bootstrap width: 100%.
  • Les contrôles napparaissent en ligne que dans les fenêtres dau moins 576 px de large pour tenir compte des fenêtres étroites sur les appareils mobiles.

Vous devrez peut-être régler manuellement la largeur et lalignement des contrôles de formulaire individuels avec des utilitaires despacement (comme indiqué ci-dessous). Enfin, veillez à toujours inclure un <label> avec chaque contrôle de formulaire, même si vous devez le masquer aux visiteurs non lecteurs décran avec .sr-only .

Les contrôles et sélections de formulaires personnalisés sont également pris en charge.

Alternatives aux étiquettes masquées

Les technologies dassistance telles que les lecteurs décran auront des problèmes avec vos formulaires si vous nincluez pas détiquette pour chaque entrée. Pour ces formulaires en ligne, vous pouvez masquer les étiquettes à laide de la classe .sr-only. Il existe dautres méthodes alternatives pour attribuer un libellé aux technologies dassistance, telles que aria-label, aria-labelledby ou title attribut. Si aucun de ces éléments nest présent, les technologies dassistance peuvent recourir à lattribut placeholder, sil est présent, mais notez que lutilisation de placeholder en tant que le remplacement dautres méthodes détiquetage nest pas conseillé.

Texte daide

Le texte daide au niveau du bloc dans les formulaires peut être créé à laide de .form-text (anciennement .help-block dans la v3). Le texte daide en ligne peut être implémenté de manière flexible en utilisant nimporte quel élément HTML en ligne et des classes utilitaires telles que .text-muted.

Association du texte daide à des contrôles de formulaire

Le texte daide doit être explicitement associé au contrôle de formulaire auquel il se rapporte en utilisant lattribut aria-describedby. Cela garantira que les technologies dassistance, telles que les lecteurs décran, annonceront ce texte daide lorsque lutilisateur se concentre ou entre dans le contrôle.

Le texte daide sous les entrées peut être stylisé avec .form-text. Cette classe comprend display: block et ajoute une marge supérieure pour un espacement facile des entrées ci-dessus.

Mot de passe Votre mot de passe doit comporter entre 8 et 20 caractères, contenir des lettres et des chiffres et ne doit pas contenir despaces, de caractères spéciaux ou demoji.

Le texte en ligne peut utiliser nimporte quel élément HTML en ligne typique (que ce soit un <small>, <span>, ou autre chose) avec rien de plus quune classe utilitaire.

Formulaires désactivés

Ajoutez lattribut booléen disabled sur une entrée pour empêcher les interactions de lutilisateur et le faire apparaître plus léger.

Ajoutez le disabled attribuer à un <fieldset> pour désactiver tous les contrôles à lintérieur.

Mise en garde avec ancres

Par défaut, les navigateurs traiteront tous les contrôles de formulaire natifs (<input>, <select> et <button> éléments) à lintérieur dun <fieldset disabled> comme désactivé, empêchant à la fois les interactions clavier et souris sur eux. Cependant, si votre formulaire comprend également des éléments <a ... class="btn btn-*">, ceux-ci recevront uniquement le style pointer-events: none. Comme indiqué dans la section sur létat désactivé pour les boutons (et plus particulièrement dans la sous-section pour les éléments dancrage), cette propriété CSS nest pas encore normalisée et nest pas entièrement prise en charge dans Opera 18 et versions antérieures, ou dans Internet Explorer 10, et a gagné nempêche pas les utilisateurs de clavier de se concentrer ou dactiver ces liens Donc, pour être sûr, utilisez JavaScript personnalisé pour désactiver ces liens.

Compatibilité entre navigateurs

Bien que Bootstrap appliquera ces styles dans tous les navigateurs, Internet Explorer 11 et les versions antérieures ne prennent pas entièrement en charge lattribut disabled sur un <fieldset>. Utilisez JavaScript personnalisé pour désactiver le jeu de champs dans ces navigateurs.

Validation

Fournissez des commentaires utiles et exploitables à vos utilisateurs grâce à la validation de formulaire HTML5, disponible dans tous nos navigateurs pris en charge. Choisissez parmi les commentaires de validation par défaut du navigateur ou implémentez des messages personnalisés avec nos classes intégrées et notre JavaScript de démarrage.

Nous recommandons vivement les styles de validation personnalisés car les paramètres par défaut du navigateur natif ne sont pas annoncés aux lecteurs décran.

Comment ça marche

Voici comment la validation de formulaire fonctionne avec Bootstrap:

  • La validation de formulaire HTML est appliquée via les deux pseudo-classes de CSS, :invalid et :valid. Il sapplique aux éléments <input>, <select> et <textarea>.
  • Bootstrap étend les styles :invalid et :valid à la classe parent .was-validated, généralement appliquée au <form>. Sinon, tout champ obligatoire sans valeur apparaît comme non valide au chargement de la page. De cette façon, vous pouvez choisir quand les activer (généralement après la tentative denvoi du formulaire).
  • En guise de solution de secours, .is-invalid et .is-valid peuvent être utilisées à la place des pseudo-classes pour la validation côté serveur. Ils ne nécessitent pas de classe parente .was-validated.
  • En raison des contraintes de fonctionnement du CSS, nous ne pouvons pas (pour le moment) appliquer des styles à un <label> qui précède un contrôle de formulaire dans le DOM sans laide de JavaScript personnalisé.
  • Tous les navigateurs modernes prennent en charge lAPI de validation de contrainte, une série de méthodes JavaScript pour valider les contrôles de formulaire.
  • Les messages de commentaires peuvent utiliser les paramètres par défaut du navigateur (différents pour chaque navigateur et instables via CSS) ou nos styles de commentaires personnalisés avec HTML et CSS supplémentaires.
  • Vous pouvez fournir des messages de validité personnalisés avec setCustomValidity en JavaScript.

Dans cet esprit, considérez les démos suivantes pour nos styles de validation de formulaire personnalisés, nos classes côté serveur facultatives et les paramètres par défaut du navigateur.

Styles personnalisés

Pour les messages de validation du formulaire Bootstrap personnalisé, vous devrez ajouter lattribut booléen novalidate à votre <form>. Cela désactive les info-bulles de commentaires par défaut du navigateur, mais permet toujours daccéder aux API de validation de formulaire en JavaScript. Essayez de soumettre le formulaire ci-dessous; notre JavaScript interceptera le bouton denvoi et vous transmettra vos commentaires.

Lors de la tentative denvoi, vous verrez les :invalid et :valid styles appliqués à vos contrôles de formulaire.

Paramètres par défaut du navigateur

Vous nêtes pas intéressé par les messages de commentaires de validation personnalisés ou par lécriture de JavaScript pour modifier les comportements du formulaire? Très bien, vous pouvez utiliser les paramètres par défaut du navigateur. Essayez de soumettre le formulaire ci-dessous. Selon votre navigateur et votre système dexploitation, vous verrez un style de commentaires légèrement différent.

Bien que ces styles de commentaires ne puissent pas être stylisés avec CSS, vous pouvez toujours personnaliser le texte des commentaires via JavaScript.

Côté serveur

Nous vous recommandons dutiliser la validation côté client, mais si vous avez besoin du côté serveur, vous pouvez indiquer des champs de formulaire invalides et valides avec .is-invalid et .is-valid. Notez que .invalid-feedback est également pris en charge avec ces classes.

Éléments pris en charge

Nos exemples de formulaires affichent les <input> textuels natifs ci-dessus, mais des styles de validation de formulaire sont disponibles pour nos contrôles de formulaire personnalisés.

Info-bulles

Si la mise en page de votre formulaire le permet, vous pouvez échanger les .{valid|invalid}-feedback classes pour les classes .{valid|invalid}-tooltip pour afficher les commentaires de validation dans une info-bulle stylisée. Assurez-vous davoir un parent avec position: relative dessus pour le positionnement de linfobulle. Dans lexemple ci-dessous, nos classes de colonnes lont déjà, mais votre projet peut nécessiter une configuration alternative.

Formulaires personnalisés

Pour encore plus de personnalisation et de croisement cohérence du navigateur, utilisez nos éléments de formulaire entièrement personnalisés pour remplacer les paramètres par défaut du navigateur. Ils sont construits sur un balisage sémantique et accessible, ils remplacent donc de manière solide tout contrôle de formulaire par défaut.

Cases à cocher et radios

Chaque case à cocher et radio est entourée dun <div> avec un frère <span> pour créer notre contrôle personnalisé et un <label> pour le texte daccompagnement. Structurellement, cest la même approche que notre .form-check par défaut.

Nous utilisons le sélecteur frère (~) pour tous nos états <input> – comme :checked – pour styliser correctement notre indicateur de formulaire personnalisé. Lorsquil est combiné avec la classe .custom-control-label, nous pouvons également styliser le texte de chaque élément en fonction de létat de <input>.

Nous masquons le <input> par défaut avec opacity et utilisons .custom-control-label pour créer un nouvel indicateur de formulaire personnalisé à sa place avec ::before et ::after. Malheureusement, nous ne pouvons pas en créer un personnalisé uniquement à partir de <input> car le content de CSS ne fonctionne pas sur cet élément.

Dans les états cochés, nous utilisons des icônes SVG intégrées en base64 dOpen Iconic. Cela nous offre le meilleur contrôle pour le style et le positionnement sur les navigateurs et les appareils.

Cases à cocher

Cochez cette case personnalisée

Cases à cocher personnalisées peut également utiliser la pseudo-classe :indeterminate lorsquelle est définie manuellement via JavaScript (il ny a pas dattribut HTML disponible pour le spécifier).

Cochez cette case personnalisée

Si vous utilisez jQuery, quelque chose comme ça devrait suffire:

Radios

Activer / désactiver cette radio personnalisée
Ou basculer cette autre radio personnalisée

Inline

Activer / désactiver cette radio personnalisée
Ou basculer cette autre radio personnalisée

Désactivée

Les cases à cocher et les radios personnalisées peuvent également être désactivées. Ajoutez lattribut booléen disabled au <input> et lindicateur personnalisé et la description du libellé seront automatiquement stylisés.

Cochez cette case personnalisée
Activer / désactiver cette radio personnalisée

Sélectionner le menu

Personnalisé <select> les menus nont besoin que dune classe personnalisée, .custom-select pour déclencher les styles personnalisés.

Vous pouvez également choisir entre des sélections personnalisées petites et grandes pour correspondent à nos entrées de texte de taille similaire.

Lattribut multiple est également pris en charge:

De même que lattribut size:

Navigateur de fichiers

Lentrée de fichier est la plus gnarly du groupe et nécessite du JavaScript supplémentaire si vous souhaitez les connecter avec le fichier fonctionnel Choose file… et le texte du nom de fichier sélectionné.

Choose file

Nous masquons le fichier par défaut <input> via et stylisez à la place le <label>. Le bouton est généré et positionné avec ::after. Enfin, nous déclarons un width et height sur le <input> pour un espacement approprié pour le contenu environnant .

Traduire ou personnaliser les chaînes

La pseudo-classe :lang() est utilisée pour permettre la traduction du texte « Parcourir » en un autre langues. Remplacez ou ajoutez des entrées à la variable Sass $custom-file-text avec la balise de langue appropriée et les chaînes localisées. Les chaînes anglaises peuvent être personnalisées de la même manière.Par exemple, voici comment ajouter une traduction en espagnol (le code de langue de lespagnol est es):

Voici lang(es) en action sur lentrée de fichier personnalisé pour une traduction espagnole:

Seleccionar Archivo

Vous devrez définir correctement la langue de votre document (ou de son sous-arbre) pour que le texte correct soit affiché. Cela peut être fait à laide de lattribut lang sur lélément <html> ou sur len-tête HTTP Content-Language , entre autres méthodes.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *