12.2 — RTL (droite à gauche)
⏱️ TL;DR — Bootstrap 5 supporte officiellement le RTL (arabe, hébreu, persan…). Deux réglages :
dir="rtl"+langsur<html>, et le CSSbootstrap.rtl.css. Grâce aux classes logiquesstart/end(au lieu deleft/right), la plupart du markup fonctionne dans les deux sens sans modification.
🎯 Objectifs
- Activer le RTL.
- Comprendre pourquoi
start/endfacilite le RTL. - Concevoir un markup « bidirectionnel ».
Activer le RTL
<!doctype html>
<html lang="ar" dir="rtl">
<head>
<link href=".../bootstrap.rtl.min.css" rel="stylesheet">
</head>
<body>…</body>
</html>Deux ingrédients : l’attribut dir="rtl" (+ lang) et la feuille RTL (bootstrap.rtl.css), qui est le miroir du CSS normal.
Pourquoi start/end change tout
Depuis la v5, Bootstrap utilise des propriétés logiques :
| Physique (à éviter) | Logique (RTL-friendly) |
|---|---|
ml-3 / mr-3 | ms-3 / me-3 |
text-left / text-right | text-start / text-end |
float-left / float-right | float-start / float-end |
border-left | border-start |
start = début de lecture (gauche en LTR, droite en RTL) ; end = fin. En utilisant ces classes, votre mise en page s’inverse automatiquement selon dir.
Générer le CSS RTL en Sass
Le RTL est produit par l’outil RTLCSS lors du build de Bootstrap. Si vous compilez votre propre Sass, générez une version RTL avec RTLCSS (postcss) à partir de votre CSS compilé.
Contenu bidirectionnel
Une même page peut mêler des zones LTR et RTL en posant dir localement :
<blockquote dir="rtl" lang="ar">نص عربي</blockquote>
<p dir="ltr">Texte latin</p>Ce à quoi faire attention
- Icônes directionnelles (flèches « suivant/précédent ») : elles doivent s’inverser — vérifiez vos carrousels et paginations.
- Nombres et code restent LTR même en contexte RTL.
- Images/logos : certains ne doivent pas être mis en miroir.
⚠️ Piège — Utiliser encore
ml-*/mr-*(v4) « par habitude » : en RTL, elles ne s’inversent pas et cassent la mise en page. Bannissez le physique, utilisezms-*/me-*.
💡 Pour un dev React — Si votre app doit gérer plusieurs langues dont l’arabe, basez toute votre UI sur
start/enddès le départ : ajouter le RTL revient alors à basculerdiret la feuille RTL, sans réécrire les composants. C’est un choix d’architecture, pas un patch de dernière minute.
✏️ Exercices
- Quels deux réglages activent le RTL sur une page ?
✅ Solution
dir="rtl" (+ lang) sur <html>, et charger bootstrap.rtl.css.
- Pourquoi remplacer
ml-3parms-3?
✅ Solution
ms-3 (margin-start) s’inverse automatiquement en RTL ; ml-3 (physique) non.
🧠 Quiz de révision
1. Quel attribut HTML active la direction RTL ?
dir="rtl".
2. Quelle feuille CSS charger pour le RTL ?
bootstrap.rtl.css.
3. Que signifie start en RTL ?
start en RTL ?Le début de lecture = la droite.
4. Quel outil génère le CSS RTL ?
RTLCSS.
5. Les nombres s’inversent-ils en RTL ?
Non, ils restent en LTR.
🎉 Fin de la Partie 12 ! Partie suivante : Partie 13 — Optimisation & mise en production