Disposition
Donnez une certaine structure à vos formulaires, de l'implémentation en ligne à l'horizontale en passant par les implémentations de grille personnalisées, grâce à nos options de mise en page de formulaire.
Formes
Chaque groupe de champs de formulaire doit résider dans un <form>
élément. Bootstrap ne fournit aucun style par défaut pour l' <form>
élément, mais certaines fonctionnalités de navigateur puissantes sont fournies par défaut.
- Nouveau dans les formulaires du navigateur ? Envisagez de consulter les documents du formulaire MDN pour un aperçu et une liste complète des attributs disponibles.
<button>
s dans un<form>
défaut àtype="submit"
, alors efforcez-vous d'être précis et incluez toujours untype
.- Vous pouvez désactiver chaque élément de formulaire dans un formulaire avec l'
disabled
attribut sur le<form>
.
Étant donné que Bootstrap s'applique display: block
à width: 100%
presque tous nos contrôles de formulaire, les formulaires s'empileront verticalement par défaut. Des classes supplémentaires peuvent être utilisées pour faire varier cette mise en page sur une base par formulaire.
Utilitaires
Les utilitaires de marge sont le moyen le plus simple d'ajouter de la structure aux formulaires. Ils fournissent un regroupement de base d'étiquettes, de contrôles, de texte de formulaire facultatif et de messagerie de validation de formulaire. Nous vous recommandons de vous en tenir aux margin-bottom
utilitaires et d'utiliser une seule direction tout au long du formulaire pour plus de cohérence.
N'hésitez pas à créer vos formulaires comme bon vous semble, avec <fieldset>
s, <div>
s ou presque n'importe quel autre élément.
<div class="mb-3">
<label for="formGroupExampleInput" class="form-label">Example label</label>
<input type="text" class="form-control" id="formGroupExampleInput" placeholder="Example input placeholder">
</div>
<div class="mb-3">
<label for="formGroupExampleInput2" class="form-label">Another label</label>
<input type="text" class="form-control" id="formGroupExampleInput2" placeholder="Another input placeholder">
</div>
Grille de formulaire
Des formulaires plus complexes peuvent être construits à l'aide de 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 d'alignement supplémentaires. Nécessite que la $enable-grid-classes
variable Sass soit activée (activée par défaut).
<div class="row">
<div class="col">
<input type="text" class="form-control" placeholder="First name" aria-label="First name">
</div>
<div class="col">
<input type="text" class="form-control" placeholder="Last name" aria-label="Last name">
</div>
</div>
Gouttières
En ajoutant des classes de modificateur de gouttière , vous pouvez contrôler la largeur de la gouttière aussi bien dans la direction en ligne que dans le sens du bloc. Nécessite également que la $enable-grid-classes
variable Sass soit activée (activée par défaut).
<div class="row g-3">
<div class="col">
<input type="text" class="form-control" placeholder="First name" aria-label="First name">
</div>
<div class="col">
<input type="text" class="form-control" placeholder="Last name" aria-label="Last name">
</div>
</div>
Des mises en page plus complexes peuvent également être créées avec le système de grille.
<form class="row g-3">
<div class="col-md-6">
<label for="inputEmail4" class="form-label">Email</label>
<input type="email" class="form-control" id="inputEmail4">
</div>
<div class="col-md-6">
<label for="inputPassword4" class="form-label">Password</label>
<input type="password" class="form-control" id="inputPassword4">
</div>
<div class="col-12">
<label for="inputAddress" class="form-label">Address</label>
<input type="text" class="form-control" id="inputAddress" placeholder="1234 Main St">
</div>
<div class="col-12">
<label for="inputAddress2" class="form-label">Address 2</label>
<input type="text" class="form-control" id="inputAddress2" placeholder="Apartment, studio, or floor">
</div>
<div class="col-md-6">
<label for="inputCity" class="form-label">City</label>
<input type="text" class="form-control" id="inputCity">
</div>
<div class="col-md-4">
<label for="inputState" class="form-label">State</label>
<select id="inputState" class="form-select">
<option selected>Choose...</option>
<option>...</option>
</select>
</div>
<div class="col-md-2">
<label for="inputZip" class="form-label">Zip</label>
<input type="text" class="form-control" id="inputZip">
</div>
<div class="col-12">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="gridCheck">
<label class="form-check-label" for="gridCheck">
Check me out
</label>
</div>
</div>
<div class="col-12">
<button type="submit" class="btn btn-primary">Sign in</button>
</div>
</form>
Forme horizontale
Créez des formulaires horizontaux avec la grille en ajoutant la .row
classe pour former des groupes et en utilisant les .col-*-*
classes pour spécifier la largeur de vos étiquettes et contrôles. Assurez-vous d'ajouter également .col-form-label
à vos <label>
s afin qu'ils 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 l'alignement parfait dont vous avez besoin. Par exemple, nous avons supprimé l' padding-top
étiquette sur nos entrées radio empilées pour mieux aligner la ligne de base du texte.
<form>
<div class="row mb-3">
<label for="inputEmail3" class="col-sm-2 col-form-label">Email</label>
<div class="col-sm-10">
<input type="email" class="form-control" id="inputEmail3">
</div>
</div>
<div class="row mb-3">
<label for="inputPassword3" class="col-sm-2 col-form-label">Password</label>
<div class="col-sm-10">
<input type="password" class="form-control" id="inputPassword3">
</div>
</div>
<fieldset class="row mb-3">
<legend class="col-form-label col-sm-2 pt-0">Radios</legend>
<div class="col-sm-10">
<div class="form-check">
<input class="form-check-input" type="radio" name="gridRadios" id="gridRadios1" value="option1" checked>
<label class="form-check-label" for="gridRadios1">
First radio
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="gridRadios" id="gridRadios2" value="option2">
<label class="form-check-label" for="gridRadios2">
Second radio
</label>
</div>
<div class="form-check disabled">
<input class="form-check-input" type="radio" name="gridRadios" id="gridRadios3" value="option3" disabled>
<label class="form-check-label" for="gridRadios3">
Third disabled radio
</label>
</div>
</div>
</fieldset>
<div class="row mb-3">
<div class="col-sm-10 offset-sm-2">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="gridCheck1">
<label class="form-check-label" for="gridCheck1">
Example checkbox
</label>
</div>
</div>
</div>
<button type="submit" class="btn btn-primary">Sign in</button>
</form>
Dimensionnement horizontal des étiquettes de formulaire
Assurez-vous d'utiliser .col-form-label-sm
ou .col-form-label-lg
à votre <label>
s ou <legend>
s pour suivre correctement la taille de .form-control-lg
et .form-control-sm
.
<div class="row mb-3">
<label for="colFormLabelSm" class="col-sm-2 col-form-label col-form-label-sm">Email</label>
<div class="col-sm-10">
<input type="email" class="form-control form-control-sm" id="colFormLabelSm" placeholder="col-form-label-sm">
</div>
</div>
<div class="row mb-3">
<label for="colFormLabel" class="col-sm-2 col-form-label">Email</label>
<div class="col-sm-10">
<input type="email" class="form-control" id="colFormLabel" placeholder="col-form-label">
</div>
</div>
<div class="row">
<label for="colFormLabelLg" class="col-sm-2 col-form-label col-form-label-lg">Email</label>
<div class="col-sm-10">
<input type="email" class="form-control form-control-lg" id="colFormLabelLg" placeholder="col-form-label-lg">
</div>
</div>
Dimensionnement des colonnes
Comme indiqué dans les exemples précédents, notre système de grille vous permet de placer n'importe quel nombre de .col
s dans un fichier .row
. Ils partageront également la largeur disponible entre eux. Vous pouvez également choisir un sous-ensemble de vos colonnes pour occuper plus ou moins d'espace, tandis que les .col
s restants divisent également le reste, avec des classes de colonnes spécifiques telles que .col-sm-7
.
<div class="row g-3">
<div class="col-sm-7">
<input type="text" class="form-control" placeholder="City" aria-label="City">
</div>
<div class="col-sm">
<input type="text" class="form-control" placeholder="State" aria-label="State">
</div>
<div class="col-sm">
<input type="text" class="form-control" placeholder="Zip" aria-label="Zip">
</div>
</div>
Dimensionnement automatique
L'exemple ci-dessous utilise un utilitaire flexbox pour centrer verticalement le contenu et se transforme .col
en .col-auto
afin que vos colonnes n'occupent que l'espace nécessaire. Autrement dit, la colonne se dimensionne en fonction du contenu.
<form class="row gy-2 gx-3 align-items-center">
<div class="col-auto">
<label class="visually-hidden" for="autoSizingInput">Name</label>
<input type="text" class="form-control" id="autoSizingInput" placeholder="Jane Doe">
</div>
<div class="col-auto">
<label class="visually-hidden" for="autoSizingInputGroup">Username</label>
<div class="input-group">
<div class="input-group-text">@</div>
<input type="text" class="form-control" id="autoSizingInputGroup" placeholder="Username">
</div>
</div>
<div class="col-auto">
<label class="visually-hidden" for="autoSizingSelect">Preference</label>
<select class="form-select" id="autoSizingSelect">
<option selected>Choose...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</div>
<div class="col-auto">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="autoSizingCheck">
<label class="form-check-label" for="autoSizingCheck">
Remember me
</label>
</div>
</div>
<div class="col-auto">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>
Vous pouvez ensuite remixer cela avec des classes de colonnes spécifiques à la taille.
<form class="row gx-3 gy-2 align-items-center">
<div class="col-sm-3">
<label class="visually-hidden" for="specificSizeInputName">Name</label>
<input type="text" class="form-control" id="specificSizeInputName" placeholder="Jane Doe">
</div>
<div class="col-sm-3">
<label class="visually-hidden" for="specificSizeInputGroupUsername">Username</label>
<div class="input-group">
<div class="input-group-text">@</div>
<input type="text" class="form-control" id="specificSizeInputGroupUsername" placeholder="Username">
</div>
</div>
<div class="col-sm-3">
<label class="visually-hidden" for="specificSizeSelect">Preference</label>
<select class="form-select" id="specificSizeSelect">
<option selected>Choose...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</div>
<div class="col-auto">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="autoSizingCheck2">
<label class="form-check-label" for="autoSizingCheck2">
Remember me
</label>
</div>
</div>
<div class="col-auto">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>
Formulaires en ligne
Utilisez les .row-cols-*
classes pour créer des mises en page horizontales réactives. En ajoutant des classes de modificateur de gouttière , nous aurons des gouttières dans les directions horizontale et verticale. Sur les fenêtres mobiles étroites, le .col-12
permet d'empiler les contrôles de formulaire et plus encore. Le .align-items-center
aligne les éléments de formulaire au milieu, ce qui permet de les .form-checkbox
aligner correctement.
<form class="row row-cols-lg-auto g-3 align-items-center">
<div class="col-12">
<label class="visually-hidden" for="inlineFormInputGroupUsername">Username</label>
<div class="input-group">
<div class="input-group-text">@</div>
<input type="text" class="form-control" id="inlineFormInputGroupUsername" placeholder="Username">
</div>
</div>
<div class="col-12">
<label class="visually-hidden" for="inlineFormSelectPref">Preference</label>
<select class="form-select" id="inlineFormSelectPref">
<option selected>Choose...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</div>
<div class="col-12">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="inlineFormCheck">
<label class="form-check-label" for="inlineFormCheck">
Remember me
</label>
</div>
</div>
<div class="col-12">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>