6.1 — Form controls & select
⏱️ TL;DR — Ajoutez
.form-controlà un<input>/<textarea>et.form-selectà un<select>pour un style cohérent. Associez toujours un<label class="form-label">. Tailles-sm/-lg, étatsdisabled/readonly, aide contextuelle avec.form-text.
🎯 Objectifs
- Styliser champs texte, textarea et select.
- Associer labels et textes d’aide.
- Gérer tailles et états.
Champs texte
<div class="mb-3">
<label for="email" class="form-label">Adresse e-mail</label>
<input type="email" class="form-control" id="email" placeholder="nom@exemple.fr">
<div class="form-text">Nous ne la partagerons jamais.</div>
</div>form-labelpour le label,form-textpour l’aide.- Le
fordu label = l’iddu champ (accessibilité).
Textarea
<label for="msg" class="form-label">Message</label>
<textarea class="form-control" id="msg" rows="3"></textarea>Select
<select class="form-select" aria-label="Choix">
<option selected>Choisir…</option>
<option value="1">Un</option>
<option value="2">Deux</option>
</select>
<!-- sélection multiple -->
<select class="form-select" multiple>…</select>Tailles et états
<input class="form-control form-control-lg" placeholder="Grand">
<input class="form-control form-control-sm" placeholder="Petit">
<input class="form-control" value="Lecture seule" readonly>
<input class="form-control" placeholder="Désactivé" disabled>Input de fichier, couleur, plage de dates
<input class="form-control" type="file">
<input class="form-control form-control-color" type="color" value="#7952b3">
<input class="form-control" type="date">Bootstrap 5 style désormais l’input file nativement (plus besoin du hack custom-file de la v4).
⚠️ Piège — Un champ sans
<label>associé (ou sansaria-label) est un problème d’accessibilité majeur. Leplaceholderne remplace pas un label.
💡 Pour un dev React — En React contrôlé, ces champs prennent
value+onChangecomme d’habitude ; les classes Bootstrap ne changent rien à la logique.form-controlest purement visuel. Pensez juste à relierhtmlFor/id(attention :htmlForen JSX, pasfor).
✏️ Exercices
- Un champ mot de passe avec label et texte d’aide.
✅ Solution
<label for="pw" class="form-label">Mot de passe</label>
<input type="password" class="form-control" id="pw">
<div class="form-text">8 caractères minimum.</div>- Un select de pays, taille large.
✅ Solution
<select class="form-select form-select-lg">…</select>.
🧠 Quiz de révision
1. Quelle classe pour un input texte ?
form-control.
2. Quelle classe pour un <select> ?
<select> ?form-select.
3. Comment relier un label à un champ ?
L’attribut for du label = l’id du champ.
4. Le placeholder remplace-t-il un label ?
Non, jamais (accessibilité).
5. Quelle classe pour un texte d’aide sous un champ ?
form-text.
Chapitre suivant : 6.2 — Checks, radios, switches, range