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.
Formulaires
Chaque groupe de champs de formulaire doit résider dans un élément <form>
. Bootstrap ne fournit pas de style par défaut pour l'élément <form>
, mais certaines fonctionnalités de navigateur puissantes sont fournies par défaut.
- Vous débutez avec les formulaires de navigateur ? Envisagez de consulter la documentation du formulaire MDN pour un aperçu et une liste complète des attributs disponibles.
<bouton>
dans un<form>
par défauttype="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'attribut
disabled
sur le<form>
.
Étant donné que Bootstrap applique affichage : bloc
et largeur : 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 utilitaires margin-bottom
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 des <fieldset>
, des <div>
, 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 créés à 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 variable Sass $enable-grid-classes
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 le sens en ligne que dans le sens du bloc. Nécessite également que la variable Sass $enable-grid-classes
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 classe .row
pour former des groupes et en utilisant les classes .col-*-*
pour spécifier la largeur de vos étiquettes et contrôles. Assurez-vous d'ajouter .col-form-label
à vos <label>
également 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é le padding-top
sur notre étiquette d'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
pour votre <label>
s ou <legend>
s pour suivre correctement la taille de .form-control-lg
et .form-control-sm
.< /p>
<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
dans un .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
restants divisent également le reste, avec des classes de colonnes spécifiques comme .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 remplace .col
par .col-auto
afin que vos colonnes n'occupent que l'espace nécessaire . Autrement dit, la colonne se dimensionne elle-même 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 classes .row-cols-*
pour créer des mises en page horizontales réactives. En ajoutant des classes de modificateurs de gouttière, nous aurons des gouttières dans les directions horizontale et verticale. Sur les fenêtres mobiles étroites, le .col-12
aide à empiler les contrôles de formulaire et plus encore. Le .align-items-center
aligne les éléments du formulaire au milieu, ce qui permet d'aligner correctement le .form-checkbox
.
<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>