Les éléments `bdi` et `bdo`
Isolez et remplacez la direction du texte avec `bdi` et `bdo`.
Les éléments `bdi` et `bdo` est une leçon HTML Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage HTML Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours HTML Academy comprend 4 leçons au total.
Pourquoi des éléments de contrôle bidirectionnels ?
L’algorithme bidirectionnel Unicode gère généralement bien le texte à sens mixte, mais il faut parfois le remplacer — pour isoler un nom fourni par l’utilisateur afin qu’il ne modifie pas le sens du texte environnant, ou pour imposer un sens précis dans un bloc de code.
L’élément bdi
<bdi> (isolation bidirectionnelle) traite son contenu comme un contexte bidirectionnel distinct. Le sens du texte à l’intérieur de <bdi> ne peut pas influencer le sens du texte à l’extérieur, et inversement.
<p>User <bdi>{username}</bdi> posted at 12:34</p>Cas d’utilisation : noms d’utilisateur
Une liste d’utilisateurs mêlant des noms anglais et arabes risque de laisser les noms arabes « déborder » dans le sens RTL du texte environnant. Entourer chaque nom de <bdi> l’isole : la mise en page reste cohérente, quel que soit le sens de chaque nom.
L’élément bdo
<bdo dir="rtl"> (remplacement bidirectionnel) impose un sens précis à son contenu et remplace la résolution bidirectionnelle naturelle. Utilisez-le lorsque vous souhaitez afficher du texte dans un sens non naturel — par exemple pour afficher des extraits de code en LTR au sein d’une page RTL.
<bdo dir="ltr">someEnglishCode();</bdo>Différence avec dir
L’attribut dir sur un élément ordinaire définit un sens de base, tandis que l’algorithme bidirectionnel continue de s’appliquer à l’intérieur. <bdo> désactive l’algorithme bidirectionnel pour son contenu : chaque caractère s’écoule strictement dans le sens indiqué, quel que soit son système d’écriture.
Quand utiliser bdi
Chaque fois que vous insérez du texte généré par l’utilisateur dans une interface environnante — des noms dans les en-têtes de discussion, des noms d’utilisateur dans les commentaires ou des titres dans les éléments d’un fil. L’isolation garantit que la mise en page de l’interface n’est pas affectée par ce que l’utilisateur a saisi.
Quand utiliser bdo
Rarement. Le principal usage légitime consiste à enseigner le fonctionnement du texte bidirectionnel (montrer à quoi ressemble une chaîne inversée) ou à corriger des données mal balisées lorsque la résolution bidi naturelle produit un ordre visuel incorrect.
Combiné avec dir="auto"
Pour du contenu utilisateur dont la direction est inconnue, combinez <bdi dir="auto"> pour une double protection : la détection automatique choisit une direction de base à partir du contenu, et bdi empêche cette direction de se propager au texte environnant.
Compatibilité des navigateurs
bdi et bdo sont pris en charge par tous les navigateurs modernes. Ils font partie de HTML5 et sont stables depuis des années. Les anciennes versions d'IE ne prennent pas en charge bdi, mais elles sont fonctionnellement obsolètes ; les sites modernes peuvent utiliser bdi librement.
Accessibilité
Les lecteurs d'écran respectent l'isolation bidi : le texte placé dans <bdi> est annoncé avec la voix de sa propre langue (lorsque lang est défini), sans que le contexte environnant n'interfère. bdi aide également la synthèse vocale à produire des pauses appropriées autour des expressions isolées.
Schéma courant : i18n dans les modèles
Les modèles contenant des paramètres substituables ("Welcome, {name}") doivent entourer le paramètre de <bdi> : Welcome, <bdi>{name}</bdi>. Tout nom d'utilisateur — anglais, arabe ou mélange des deux — s'affiche correctement sans perturber le reste du message d'accueil.
Vérification des connaissances
Quelle est la différence pratique entre et ?
Résumé
bdi isole la direction du texte d'une section afin qu'elle n'affecte pas son environnement — utilisez-le pour du contenu utilisateur intégré, comme des noms dans des modèles. bdo impose une direction précise en remplaçant la direction bidi ; il est rarement nécessaire en dehors des exemples pédagogiques. Combinez bdi avec dir="auto" pour gérer de manière sûre le texte fourni par l'utilisateur dans des langues inconnues.
Questions Fréquemment Posées
La leçon « Les éléments `bdi` et `bdo` » est-elle gratuite ?
Oui — le texte complet de « Les éléments `bdi` et `bdo` » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours HTML Academy, passe à CoddyKit PRO. Le cours HTML Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Les éléments `bdi` et `bdo` » ?
Isolez et remplacez la direction du texte avec `bdi` et `bdo`. Tu pratiques HTML Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer HTML Academy ?
Aucune expérience préalable n'est requise. HTML Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Les éléments `bdi` et `bdo` » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon HTML Academy ?
Oui. Chaque leçon HTML Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Attribut `lang` et lecteurs d’écran
- `dir=rtl` pour le texte de droite à gauche
- Les éléments `bdi` et `bdo`
- `charset` et gestion d’Unicode : caractères spéciaux