7.5 — L’Utility API
⏱️ TL;DR — L’Utility API est un mécanisme Sass qui génère les classes utilitaires à partir d’une map
$utilities. Vous pouvez modifier, désactiver ou créer des utilitaires (avec responsive, états:hover, variantes) en éditant cette map — sans écrire de CSS répétitif. C’est réservé au build npm/Sass.
🎯 Objectifs
- Comprendre comment Bootstrap génère ses utilitaires.
- Ajouter une nouvelle classe utilitaire.
- Modifier ou supprimer un utilitaire existant.
Le principe
Chaque famille d’utilitaires est décrite par une entrée dans la map Sass $utilities. Bootstrap boucle dessus pour générer les classes. Exemple simplifié d’une entrée :
$utilities: (
"opacity": (
property: opacity,
values: (0: 0, 25: .25, 50: .5, 75: .75, 100: 1)
)
);Cela génère .opacity-0, .opacity-25, etc.
Créer un utilitaire
@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/maps";
@import "bootstrap/scss/mixins";
@import "bootstrap/scss/utilities";
// Ajouter une famille "cursor"
$utilities: map-merge(
$utilities,
(
"cursor": (
property: cursor,
class: cursor,
responsive: true,
values: auto pointer grab not-allowed,
)
)
);
@import "bootstrap/scss/utilities/api";Génère .cursor-pointer, .cursor-grab, et les variantes responsives .cursor-md-pointer.
Options d’une entrée
| Clé | Rôle |
|---|---|
property | la/les propriétés CSS visées |
class | le préfixe de classe (sinon = property) |
values | liste ou map des valeurs |
responsive | true → génère les variantes par breakpoint |
state | ex. hover focus → .class-hover |
rfs | active le responsive font sizing |
rtl | inclure/exclure en RTL |
Modifier ou désactiver
// changer les valeurs d'un utilitaire existant
$utilities: map-merge($utilities, (
"width": map-merge(
map-get($utilities, "width"),
(values: (10: 10%, 25: 25%, 50: 50%, 100: 100%))
)
));
// désactiver complètement un utilitaire
$utilities: map-merge($utilities, ("float": null));⚠️ Piège — L’ordre des
@importcompte :utilitiesavant vos modifications, puisutilities/apiaprès. Sinon vos ajouts ne sont pas pris en compte, ou l’API génère avant vos merges.
💡 Pour un dev React — L’Utility API est l’équivalent conceptuel de la config
theme.extendde Tailwind : un point central pour étendre le système de classes. C’est ce qui permet d’aligner Bootstrap sur vos design tokens sans dupliquer du CSS à la main.
✏️ Exercices
- Générez une classe
.cursor-pointer.
✅ Solution
Ajouter une entrée "cursor" à $utilities avec property: cursor et values: pointer (voir l’exemple du chapitre), puis importer utilities/api.
- Comment désactiver totalement l’utilitaire
float?
✅ Solution
$utilities: map-merge($utilities, ("float": null));.
🧠 Quiz de révision
1. À partir de quoi les utilitaires sont-ils générés ?
De la map Sass $utilities.
2. Quelle clé génère les variantes responsives ?
responsive: true.
3. Comment ajouter des états :hover à un utilitaire ?
:hover à un utilitaire ?Via la clé state: hover (etc.).
4. Comment désactiver un utilitaire existant ?
Le fusionner avec null : ("float": null).
5. L’Utility API fonctionne-t-elle avec le CDN ?
Non — elle nécessite un build Sass (npm).
🎉 Fin de la Partie 7 ! Partie suivante : Partie 8 — Personnalisation avec Sass