Académique Documents
Professionnel Documents
Culture Documents
BOOTSTRAP FORMULAIRES
A La structure de base
1. Le formulaire Bootstrap
Pour insérer un formulaire, nous allons utiliser une grille Bootstrap très simple, avec
un conteneur <div class="container">, une ligne <div class="row"> et une
colonne <div class="col">.
Le formulaire <form> utilise l’attribut role="form".
Chaque élément du formulaire sera placé dans une boîte <div> ayant une classe
spécifique.
Par exemple, les éléments <input> de saisie seront placés dans une
boîte <div> avec la classe .form-group et les cases à cocher seront placées dans une
boîte <div> avec la classe .form-check .
Les éléments du formulaire auront des classes Bootstrap dédiées : .form-
control, .form-check-input ...
Voici un exemple simple d’un formulaire, avec deux champs de saisie, une case à
cocher et un bouton de validation :
<form role="form">
<div class="form-group">
<label for="lemail">Adresse mail</label>
<input type="email" class="form-control" id="lemail" placeholder="Indiquez votre adresse mail">
</div>
<div class="form-group">
<label for="pw">Mot de passe</label>
<input type="password" class="form-control" id="pw" placeholder="Indiquez votre mot de passe">
</div>
<div class="form-check">
<input type="checkbox" class="form-check-input" id="accepter">
<label class="form-check-label" for="accepter"> Accepter les conditions</label>
</div>
<button type="submit" class="btn btn-primary">Envoyer</button>
</form>
Le sélecteur .form-group : pour grouper des label avec le champ de formulaire
correspondant.
.form-group {
margin-bottom: 1rem;
}
.form-control {
display: block;
width: 100%;
padding: 0.375rem 0.75rem;
font-size: 1rem;
line-height: 1.5;
color: #495057;
background-color: #fff;
background-clip: padding-box;
border: 1px solid #ced4da;
border-radius: 0.25rem;
transition: border-color 0.15s ease-in-out,
box-shadow 0.15s ease-in-out;
}
2
Voici les propriétés CSS des deux classes pour le calcul de la hauteur des champs :
● .form-control-lg : height: calc(2.875rem + 2px);.
● .form-control-sm : height: calc(1.8125rem + 2px);.
Pour avoir des libellés qui soient adaptés à ces hauteurs de champ, utilisez les
classes .col-form-label-lg avec .form-control-lg et .col-form-label-sm avec .form-
control-sm, pour les éléments <label> et <legend>.
Pour avoir une hauteur qui s’adapte selon le type, il faudrait rajouter le test
@media (min-width : 992px) {….pour lg par exemple
3
Voici les propriétés de la classe .form-control-plaintext :
.form-control-plaintext {
display: block;
width: 100%;
padding-top: .375rem;
padding-bottom: .375rem;
margin-bottom: 0;
line-height: 1.5;
background-color: transparent;
border: solid transparent;
border-width: 1px 0;
}
4
<input class="form-check-input" type="radio" name="btradio" id="choixb" value="choixb">
<label class="form-check-label" for="choixb">Choix B</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="btradio" id="choixc" value="choixc">
<label class="form-check-label" for="choixc">Choix C</label>
</div>
</form>
Nous l’avons déjà utilisé de nombreuses fois, c’est la classe .form-group qui permet
de mettre en page de manière standard les formulaires Bootstrap. Cette classe
s’insère dans chaque boîte <div> contenant un élément de formulaire.
Le dossier pour cet exemple est Formulaires-06.
Voici un exemple vide d’éléments de formulaire :
<form role="form">
<div class="form-group">
...
</div>
<div class="form-group">
...
</div>
</form>
Les éléments de formulaire apparaissent les uns sous les autres dans cette mise en
page standard.
2. Utiliser une grille standard
Pour avoir des formulaires plus attractifs, vous pouvez placer les éléments dans une
grille Bootstrap, elle-même placée dans le formulaire.
Voici l’exemple d’un formulaire comportant deux champs de saisie et un bouton
d’envoi.
<div class="container">
<div class="row">
<div class="col">
<form role="form">
<div class="row">
<div class="col">
<label for="lemail">Adresse mail</label>
<input type="email" class="form-control" id="lemail" placeholder="Indiquez votre adresse mail">
</div>
<div class="col">
<label for="pw">Mot de passe</label>
<input type="password" class="form-control" id="pw" placeholder="Indiquez votre mot de passe">
</div>
</div>
<div class="row">
<div class="col">
<button type="submit" class="btn btn-primary">Envoyer</button>
</div>
</div>
</form>
</div>
</div>
</div>
6
Le dossier pour cet exemple est Formulaires-07.
<div class="container">
<div class="row">
<div class="col">
<form role="form">
<div class="form-row">
<div class="col">
<label for="lemail">Adresse mail</label>
<input type="email" class="form-control" id="lemail" placeholder="Indiquez votre adresse mail">
</div>
<div class="col">
<label for="pw">Mot de passe</label>
<input type="password" class="form-control" id="pw" placeholder="Indiquez votre mot de passe">
</div>
</div>
<div class="form-row">
<div class="col">
<button type="submit" class="btn btn-primary">Envoyer</button>
</div>
</div>
</form>
</div>
</div>
</div>
7
</div>
<div class="form-group">
<label for="adresse">Addresse</label>
<input type="text" class="form-control" id="adresse" placeholder="12 rue Machin">
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="ville">Ville</label>
<input type="text" class="form-control" id="ville">
</div>
<div class="form-group col-md-2">
<label for="cp">Code postal</label>
<input type="text" class="form-control" id="cp">
</div>
<div class="form-group col-md-4">
<label for="pays">Pays</label>
<select id="pays" class="form-control">
<option selected>Choisissez...</option>
<option>A... </option>
<option>B... </option>
</select>
</div>
</div>
<button type="submit" class="btn btn-rimary">Envoyez</button>
</form>
</div>
</div>
</div>
8
5. Les formulaires en colonnes
● La classe .form-inline est bien appliquée à l’élément <form> pour indiquer que
les éléments de celui-ci doivent s’afficher en ligne, les uns à côté des autres.
10
● Les trois éléments du formulaire ont tous la classe .mb-2 pour toujours avoir
une marge basse supplémentaire. Ainsi, sur petit écran, les éléments sont
espacés verticalement.
● Seuls les deux premiers éléments ont une marge supplémentaire à droite,
pour les petits écrans et supérieurs, afin qu’ils ne se touchent pas sur tous les
écrans. Le dernier élément n’ayant pas d’autres éléments sur sa droite, il n’est
pas nécessaire de lui appliquer cette marge supplémentaire.
Les étiquettes des champs sont des éléments indispensables dans la conception des
formulaires. Pour l’accessibilité des sites web, ils doivent être présents. Mais vous
pouvez parfaitement masquer automatiquement les étiquettes pour les formulaires
dédiés aux écrans standards, non optimisés pour les personnes en situation de
handicap. Pour masquer les étiquettes, utilisez la classe .sr-only, sr pour Screen
Reader.
<form class="form-inline">
<label for="nom" class="sr-only">Nom</label>
<input type="text" class="form-control mb-2 mr-sm-2" id="nom" placeholder="Votre nom">
<label for="prenom" class="sr-only">Prénom</label>
<input type="text" class="form-control mb-2 mr-sm-2" id="prenom" placeholder="Votre prénom">
<button type="submit" class="btn btn-primary mb-2">Envoyer
</button>
</form>
2. L’aide contextuelle
En plus de l’aide affichée dans le champ avec l’attribut placeholder, vous pouvez
afficher une aide contextuelle pour chaque champ que vous souhaitez. Pour ce faire,
utilisez par exemple l’élément <small> avec les classes .form-text et .text-muted.
Voici un exemple simple :
<form role="form">
<div class="form-group">
<label for="lemail">Adresse mail</label>
<input type="email" class="form-control"
id="lemail" placeholder="Indiquez votre adresse mail">
<small id="lemail" class="form-text text-muted">
Saisissez dans ce champ votre adresse mail, sans oublier le caractère @.
</small>
</div>
<button type="submit" class="btn btn-primary">Envoyer</button>
</form>
11
L’aide contextuelle placée dans l’élément <small> est liée au champ <input> par
l’attribut id.
3. La validation des formulaires
Vous avez la possibilité de vérifier, de valider les saisies effectuées dans les champs
des formulaires, à l’aide de scripts JavaScript, PHP ou autres. Bootstrap propose des
classes dédiées à l’affichage des champs valides avec .is-valid, et non valides
avec .is-invalid.
Les champs valides sont alors encadrés d’une bordure verte et les champs non
valides sont encadrés d’une bordure rouge.
4. Les cases à cocher et les boutons radio personnalisés
Bootstrap vous propose une mise en forme des cases à cocher et des boutons radio
personnalisée qui remplace celle par défaut des navigateurs. Bootstrap utilise une
image au format SVG.
Pour les cases à cocher, la boîte qui les contient doit avoir ces deux
classes : <div class="custom-control custom-checkbox">. La case à cocher doit avoir
cette classe : <input class="custom-control-input" type="checkbox">, et l’étiquette
celle-ci : <label class="custom-control-label">.
Pour les boutons, la boîte qui les contient doit avoir ces deux classes
: <div class="custom-control custom-radio">. Le bouton radio et l’étiquette ont les
mêmes classes que les cases à cocher.
<form role="form">
<p>Choisissez une ou plusieurs options</p>
<div class="custom-control custom-checkbox">
<input class="custom-control-input" type="checkbox" value="" id="choix1">
<label class="custom-control-label" for="choix1">Choix 1</label>
</div>
<div class="custom-control custom-checkbox">
<input class="custom-control-input" type="checkbox" value="" id="choix2">
<label class="custom-control-label" for="choix2">Choix 2</label>
</div>
<div class="custom-control custom-checkbox">
<input class="custom-control-input" type="checkbox" value="" id="choix3">
<label class="custom-control-label" for="choix3">Choix 3</label>
</div>
<p> </p>
<p>Choisissez une option</p>
<div class="custom-control custom-radio">
<input class="custom-control-input" type="radio" name="btradio" id="choixa" value="choixa">
<label class="custom-control-label" for="choixa">Choix A</label>
</div>
<div class="custom-control custom-radio">
<input class="custom-control-input" type="radio" name="btradio" id="choixb" value="choixb">
<label class="custom-control-label" for="choixb">Choix B</label>
</div>
<div class="custom-control custom-radio">
<input class="custom-control-input" type="radio" name="btradio" id="choixc" value="choixc">
<label class="custom-control-label" for="choixc">Choix C</label>
</div>
</form>
12
Voici l’affichage obtenu avec des éléments sélectionnés :
13
Notez que les attributs multiple et size sont bien pris en compte.
6. La sélection de fichiers
L’élément de formulaire de sélection de fichiers peut être aussi personnalisé pour
s’adapter au design de Bootstrap. Pour ce faire, le conteneur du champ doit avoir la
classe <div class="custom-file">, le champ doit avoir la classe <input type="file"
class="custom-file-input"> et l’étiquette <label class="custom-file-label">.
Le dossier pour cet exemple est Formulaires-15.
Voici le code de cet exemple :
<form role="form">
<div class="custom-file">
<input type="file" class="custom-file-input" id="fichier">
<label class="custom-file-label" for="fichier">Sélectionnez un
fichier</label> </div>
<button type="submit" class="btn btn-primary mt-2">Envoyer</button>
</form>
Voici l’affichage obtenu :
14
Voici le code de cet exemple :
<form role="form">
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text" id="prenom">Prénom</span>
</div>
<input type="text" class="form-control" placeholder="Votre prénom" aria-label="prenom" aria-
describedby="prenom">
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text" id="nom">Nom</span>
</div>
<input type="text" class="form-control" placeholder="Votre nom" aria-label="nom" aria-describedby="nom">
</div>
<div class="input-group mb-3">
<input type="text" class="form-control" placeholder="Votre adresse mail" aria-label="Adresse mail" aria-
describedby="adresse-mail">
<div class="input-group-append">
<span class="input-group-text" id="adresse-mail">prenom.nom@exemple.fr</span>
</div>
</div>
<label for="basic-url">URL de votre site web</label>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text" id="site-web">https://www.exemple.com/</span>
</div>
<input type="text" class="form-control" id="basic-url" aria-describedby="site-web">
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text">€</span>
</div>
<input type="text" class="form-control" placeholder="Montant de l'inscription" aria-label="Inscription en euros">
<div class="input-group-append">
<span class="input-group-text">.00</span>
</div>
</div>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">Informations<br>complémentaires</span>
</div>
<textarea class="form-control" aria-label="Informations complémentaires"></textarea>
</div>
</form>
15
● Pour un affichage à droite, la classe se nomme .input-group-append.
Le texte de l’information supplémentaire est inséré dans un
élément <span class="input-group-text" id="xxx">. Cet élément utilise la
classe .input-group-text et possède un id.
Vous pouvez afficher les champs avec trois hauteurs, avec des classes
spécifiques .input-group-XX, à placer dans le conteneur <div> :
● Petite hauteur : <div class="input-group input-group-sm">.
● Hauteur standard : <div class="input-group">.
● Grande hauteur : <div class="input-group input-group-lg">.
3. Les champs de saisie multiples
Bootstrap vous permet d’insérer plusieurs champs dans le même conteneur. Cela
vous permet de gagner de la place.
Voici un exemple simple :
<form role="form">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text" id="">Prénom et nom</span>
</div>
<input type="text" class="form-control">
<input type="text" class="form-control">
</div>
</form>
Voici l’affichage obtenu :
16
<span class="input-group-text">Sans les centimes </span>
</div>
</div>
Voici l’affichage obtenu :
Dans cet exemple, nous avons dans un premier temps le champ pour sélectionner
un fichier et son bouton associé, puis nous avons l’information supplémentaire.
17