diff options
Diffstat (limited to 'files/fr/web/html/element/bdi/index.html')
-rw-r--r-- | files/fr/web/html/element/bdi/index.html | 199 |
1 files changed, 199 insertions, 0 deletions
diff --git a/files/fr/web/html/element/bdi/index.html b/files/fr/web/html/element/bdi/index.html new file mode 100644 index 0000000000..cb0e30ee63 --- /dev/null +++ b/files/fr/web/html/element/bdi/index.html @@ -0,0 +1,199 @@ +--- +title: '<bdi> : l''élément d''isolation bidirectionnelle' +slug: Web/HTML/Element/bdi +tags: + - BiDi + - Element + - HTML + - Reference + - Web +translation_of: Web/HTML/Element/bdi +--- +<div>{{HTMLRef}}</div> + +<p>L'élément <strong><code><bdi></code></strong> (ou élément d'isolation de texte bidirectionnel) isole une portée (<em>span</em>) de texte pouvant être formatée dans une direction différente de celle du texte qui l'entoure. Cela permet, par exemple, de présenter correctement une citation en arabe (écrit de droite à gauche) au sein d'un texte écrit en français (écrit de gauche à droite).</p> + +<div>{{EmbedInteractiveExample("pages/tabbed/bdi.html", "tabbed-standard")}}</div> + +<p class="hidden">Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> et à envoyer une <em>pull request</em> !</p> + +<p>Cet élément est utile lorsqu'on intègre du texte dont on ignore la directivité (provenant d'une base de données par exemple), au sein d'un autre texte dont la direction est connue.</p> + +<p class="note"><strong>Note :</strong> On peut également utiliser l'attribut {{htmlattrxref("dir")}} afin de surcharger la directionnalité de l'élément décidée par l'agent utilisateur pour le contenu de l'élément <code><bdi></code>.</p> + +<p>Un texte bidirectionnel est un texte qui contient à la fois des suites de caractères à lire de gauche à droite (LTR pour <em>left-to-right</em>) et des suites de caractères à lire de droite à gauche (RTL pour <em>right-to-left</em>), par exemple une citation en arabe dans un texte en néerlandais. Les navigateurs implémentent <a href="https://www.w3.org/International/articles/inline-bidi-markup/uba-basics">l'algorithme de bidirectionnalité Unicode</a> afin de gérer ces cas. Dans cet algorithme, les caractères ont une directionnalité implicite : les caractères latins sont considérés comme LTR et les caractères arabes comme RTL par exemple. D'autres caractères, comme les espaces ou certains caractères de ponctuation sont considérés comme neutres et leur directionnalité est fournie par les caractères environnant.</p> + +<p>La plupart du temps, cet algorithme fournira le bon résultat, sans que l'auteur ait besoin de fournir un balisage spécifique. Toutefois, dans certains cas, il faudra aider l'algorithme et c'est là qu'intervient <code><bdi></code>.</p> + +<p>L'élément <code><bdi></code> est utilisé afin d'encadrer un fragment de texte pour indiquer à l'algorithme de traiter ce texte avec une directionnalité différente du texte qui l'entoure. Cela fonctionne selon deux axes :</p> + +<ul> + <li>La directionnalité du texte contenu dans <code><bdi></code> <em>n'influence pas</em> la directionnalité du texte environnant.</li> + <li>La directionnalité du texte contenu dans <code><bdi></code> <em>n'est pas influencée</em> par la directionnalité du texte environnant.</li> +</ul> + +<p>Prenons le texte suivant :</p> + +<pre class="no-line-numbers">TEXTE-INJECTÉ - 1re place</pre> + +<p>Si <code>TEXTE-INJECTÉ</code> est un texte LTR, aucun problème. En revanche, si <code>TEXTE-INJECTÉ</code> est RTL, <code> - 1</code> sera considéré comme du texte RTL (car ce fragment est composé de caractères neutres/faibles pour la directionnalité) et le résultat sera donc un mélange incohérent :</p> + +<pre class="no-line-numbers">1 - TEXTE-INJECTÉre place</pre> + +<p>Si on connaît d'avance la directionnalité de <code>TEXTE-INJECTÉ</code>, on peut corriger le problème en enveloppant <code>TEXTE-INJECTÉ</code> dans un élément {{HTMLElement("span")}} avec un attribut {{htmlattrxref("dir")}} décrivant la bonne directionnalité. Cependant, si on ne connaît pas la directionnalité à l'avance (<code>TEXTE-INJECTÉ</code> provenant d'une base de données ou étant saisi par un utilisateur), on utilisera <code><bdi></code> afin d'empêcher la directionnalité de <code>TEXTE-INJECTÉ</code> d'avoir un impact sur le texte environnant.</p> + +<p>Bien que le même effet de rendu puisse être créé avec la règle CSS {{cssxref("unicode-bidi")}}<code> : isolate</code> sur un élément {{HTMLElement("span")}} ou toute méthode de formatage du texte, la sémantique est ici uniquement portée par l'élément <code><bdi></code> . Les navigateurs peuvent notamment ignorer la mise en forme induite par la feuille CSS. Dans ce cas, le texte serait bien affiché en utilisant l'élément HTML mais deviendrait inutilisable si seul CSS est utilisé pour apporter cette information.</p> + +<p>Utiliser <code><span dir="auto"></code> aura le même effet qu'utiliser <code><bdi></code> mais la sémantique portée sera moindre.</p> + +<p>Pour en apprendre plus sur le texte bidirectionnel en HTML, nous vous invitons à lire <a href="/fr/docs/Web/Localization/Unicode_Bidirectional_Text_Algorithm">cet article sur l'algorithme qui détermine la direction du texte</a>.</p> + +<h2 id="Attributs">Attributs</h2> + +<p>Comme tous les éléments HTML, cet élément dispose des <a href="/fr/docs/Web/HTML/Attributs_universels">attributs universels</a>. Cependant il a une sémantique légèrement différente. En effet, l'attribut <code><strong>dir</strong></code> n'est pas hérité. S'il n'est pas renseigné, sa valeur par défaut sera <code>auto</code> et le navigateur décidera de la direction à appliquer selon le contenu de l'élément si aucune valeur parmi <code>"rtl"</code>, <code>"ltr"</code> n'est fournie.</p> + +<h2 id="Exemples">Exemples</h2> + +<h3 id="Texte_écrit_de_gauche_à_droite">Texte écrit de gauche à droite</h3> + +<p>Cet exemple affiche les gagnants d'une compétition grâce à des éléments {{HTMLElement("span")}}. Ici, les noms ne s'écrivent que de gauche à droite et le résultat s'affiche correctement :</p> + +<div id="bdi-sample-1"> +<pre class="brush: html"><ul> + <li><span class="name">Henrietta Boffin</span> - 1re place</li> + <li><span class="name">Jerry Cruncher</span> - 2e place</li> +</ul> +</pre> + +<div class="hidden"> +<pre class="brush: css">body { + border: 1px solid #3f87a6; + max-width: calc(100% - 40px - 6px); + padding: 20px; + width: calc(100% - 40px - 6px); + border-width: 1px 1px 1px 5px; +} +</pre> +</div> +</div> + +<p>{{EmbedLiveSample('bdi-sample-1','','120','','','bdi-example')}}</p> + +<h3 id="Texte_de_droite_à_gauche">Texte de droite à gauche</h3> + +<p>Cela fonctionne sans problème tant que les noms s'écrivent de gauche à droite. Lorsqu'on insère un nom écrit de droite à gauche, la partie "<code>- 1</code>" sera captée par le texte en RTL et le résultat sera confus :</p> + +<div id="bdi-sample-2"> +<pre class="brush: html"><ul> + <li><span class="name">اَلأَعْشَى</span> - 1re place</li> + <li><span class="name">Jerry Cruncher</span> - 2e place</li> +</ul> +</pre> + +<div class="hidden"> +<pre class="brush: css">body { + border: 1px solid #3f87a6; + max-width: calc(100% - 40px - 6px); + padding: 20px; + width: calc(100% - 40px - 6px); + border-width: 1px 1px 1px 5px; +} +</pre> +</div> +</div> + +<p>{{ EmbedLiveSample('bdi-sample-2','','120','','','bdi-example') }}</p> + +<h3 id="Utiliser_<bdi>_avec_du_texte_utilisant_les_deux_directions">Utiliser <code><bdi></code> avec du texte utilisant les deux directions</h3> + +<p>Pour éviter cet écueil, on pourra utiliser <code><bdi></code> pour séparer le contenu :</p> + +<div id="bdi-sample-3"> +<pre class="brush: html"><ul> + <li><bdi class="name">اَلأَعْشَى</bdi> - 1re place</li> + <li><bdi class="name">Jerry Cruncher</bdi> - 2e place</li> +</ul> +</pre> + +<div class="hidden"> +<pre class="brush: css">body { + border: 1px solid #3f87a6; + max-width: calc(100% - 40px - 6px); + padding: 20px; + width: calc(100% - 40px - 6px); + border-width: 1px 1px 1px 5px; +} +</pre> +</div> +</div> + +<p>{{ EmbedLiveSample('bdi-sample-3','','120','','','bdi-example') }}</p> + +<h2 id="Résumé_technique">Résumé technique</h2> + +<table class="properties"> + <tbody> + <tr> + <th scope="row"><dfn><a href="/fr/docs/Web/HTML/Catégorie_de_contenu">Catégories de contenu</a></dfn></th> + <td><a href="/fr/docs/Web/HTML/Catégorie_de_contenu#Contenu_de_flux">Contenu de flux</a>, <a href="/fr/docs/Web/HTML/Catégorie_de_contenu#Contenu_phras.C3.A9">contenu phrasé</a>, <a href="/fr/docs/Web/HTML/Catégorie_de_contenu#Contenu_tangible">contenu tangible</a>.</td> + </tr> + <tr> + <th scope="row"><dfn>Contenu autorisé</dfn></th> + <td><a href="/fr/docs/Web/HTML/Catégorie_de_contenu#Contenu_phras.C3.A9">Contenu phrasé</a>.</td> + </tr> + <tr> + <th scope="row"><dfn>Omission de balises</dfn></th> + <td>{{no_tag_omission}}</td> + </tr> + <tr> + <th scope="row"><dfn>Parents autorisés</dfn></th> + <td>Tout élément acceptant du <a href="/fr/docs/Web/HTML/Catégorie_de_contenu#Contenu_phras.C3.A9">contenu phrasé</a>.</td> + </tr> + <tr> + <th scope="row">Rôles ARIA autorisés</th> + <td>Tous les rôles sont autorisés.</td> + </tr> + <tr> + <th scope="row">Interface DOM</th> + <td>{{domxref("HTMLElement")}}</td> + </tr> + </tbody> +</table> + +<h2 id="Spécifications">Spécifications</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Spécification</th> + <th scope="col">État</th> + <th scope="col">Commentaires</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('HTML WHATWG', 'semantics.html#the-bdi-element', '<bdi>')}}</td> + <td>{{Spec2('HTML WHATWG')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('HTML5 W3C', 'text-level-semantics.html#the-bdi-element', '<bdi>')}}</td> + <td>{{Spec2('HTML5 W3C')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> + +<div class="hidden">Ce tableau de compatibilité a été généré à partir de données structurées. Si vous souhaitez contribuer à ces données, n'hésitez pas à envoyer une <em>pull request</em> sur <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>.</div> + +<p>{{Compat("html.elements.bdi")}}</p> + +<h2 dir="ltr" id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="/fr/docs/Web/Localization">La localisation et l'internationalisation</a></li> + <li>{{HTMLElement("bdo")}}</li> + <li>Les propriétés CSS {{cssxref("direction")}} et {{cssxref("unicode-bidi")}}</li> +</ul> |