diff options
Diffstat (limited to 'files/fr/web/html/element/bdi/index.md')
-rw-r--r-- | files/fr/web/html/element/bdi/index.md | 182 |
1 files changed, 113 insertions, 69 deletions
diff --git a/files/fr/web/html/element/bdi/index.md b/files/fr/web/html/element/bdi/index.md index 4fa34fd952..bb5b557457 100644 --- a/files/fr/web/html/element/bdi/index.md +++ b/files/fr/web/html/element/bdi/index.md @@ -24,58 +24,90 @@ tags: translation_of: Web/HTML/Element/bdi browser-compat: html.elements.bdi --- -<div>{{HTMLRef}}</div> +{{HTMLRef}} -<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> +L'élément **`<bdi>`** (ou élément d'isolation de texte bidirectionnel) isole une portée (_span_) 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). -<div>{{EmbedInteractiveExample("pages/tabbed/bdi.html", "tabbed-standard")}}</div> +{{EmbedInteractiveExample("pages/tabbed/bdi.html", "tabbed-standard")}} -<p>Un texte bidirectionnel est un texte qui contient à la fois des suites de caractères à lire de gauche à droite (LTR en anglais pour <i>left-to-right</i>) et des suites de caractères à lire de droite à gauche (RTL en anglais pour <i>right-to-left</i>), 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 bidirection Unicode (W3C)(document en anglais)</a> afin de gérer ces cas. Dans cet algorithme, les caractères ont une direction implicite : les caractères latins sont considérés comme allant de gauche à droite et les caractères arabes comme allant de droite à gauche par exemple. D'autres caractères, comme les espaces ou certains caractères de ponctuation sont considérés comme neutres et leur direction est fournie par les caractères environnants.</p> +Un texte bidirectionnel est un texte qui contient à la fois des suites de caractères à lire de gauche à droite (LTR en anglais pour _left-to-right_) et des suites de caractères à lire de droite à gauche (RTL en anglais pour _right-to-left_), par exemple une citation en arabe dans un texte en néerlandais. Les navigateurs implémentent [l'algorithme de bidirection Unicode (W3C)(document en anglais)](https://www.w3.org/International/articles/inline-bidi-markup/uba-basics) afin de gérer ces cas. Dans cet algorithme, les caractères ont une direction implicite : les caractères latins sont considérés comme allant de gauche à droite et les caractères arabes comme allant de droite à gauche par exemple. D'autres caractères, comme les espaces ou certains caractères de ponctuation sont considérés comme neutres et leur direction est fournie par les caractères environnants. -<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> +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 `<bdi>`. -<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 direction différente du texte qui l'entoure. Cela fonctionne selon deux axes :</p> +L'élément `<bdi>` est utilisé afin d'encadrer un fragment de texte pour indiquer à l'algorithme de traiter ce texte avec une direction différente du texte qui l'entoure. Cela fonctionne selon deux axes : -<ul> - <li>La direction du texte contenu dans <code><bdi></code> <em>n'influence pas</em> la direction du texte environnant.</li> - <li>La direction du texte contenu dans <code><bdi></code> <em>n'est pas influencée</em> par la direction du texte environnant.</li> -</ul> +- La direction du texte contenu dans `<bdi>` _n'influence pas_ la direction du texte environnant. +- La direction du texte contenu dans `<bdi>` _n'est pas influencée_ par la direction du texte environnant. -<p>Prenons le texte suivant :</p> +Prenons le texte suivant : -<pre class="brush: plain">TEXTE-INJECTÉ - 1re place</pre> +```plain +TEXTE-INJECTÉ - 1re place +``` -<p>Si <code>TEXTE-INJECTÉ</code> est un texte écrit de gauche à droite, aucun problème. En revanche, si <code>TEXTE-INJECTÉ</code> est un texte écrit de droite à gauche, <code>- 1</code> sera considéré comme du texte RTL (car ce fragment est composé de caractères neutres/faibles pour la direction) et le résultat sera donc un mélange incohérent :</p> +Si `TEXTE-INJECTÉ` est un texte écrit de gauche à droite, aucun problème. En revanche, si `TEXTE-INJECTÉ` est un texte écrit de droite à gauche, `- 1` sera considéré comme du texte RTL (car ce fragment est composé de caractères neutres/faibles pour la direction) et le résultat sera donc un mélange incohérent : -<pre class="brush: plain">1 - TEXTE-INJECTÉre place</pre> +```plain +1 - TEXTE-INJECTÉre place +``` -<p>Si on connaît d'avance la direction de <code>TEXTE-INJECTÉ</code>, on peut corriger le problème en enveloppant <code>TEXTE-INJECTÉ</code> dans un élément <a href="/fr/docs/Web/HTML/Element/span"><code><span></code></a> avec un attribut <a href="/fr/docs/Web/HTML/Global_attributes#attr-dir"><code>dir</code></a> décrivant la bonne direction. Cependant, si on ne connaît pas la direction à 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 direction de <code>TEXTE-INJECTÉ</code> d'avoir un impact sur le texte environnant.</p> +Si on connaît d'avance la direction de `TEXTE-INJECTÉ`, on peut corriger le problème en enveloppant `TEXTE-INJECTÉ` dans un élément [`<span>`](/fr/docs/Web/HTML/Element/span) avec un attribut [`dir`](/fr/docs/Web/HTML/Global_attributes#attr-dir) décrivant la bonne direction. Cependant, si on ne connaît pas la direction à l'avance (`TEXTE-INJECTÉ` provenant d'une base de données ou étant saisi par un utilisateur), on utilisera `<bdi>` afin d'empêcher la direction de `TEXTE-INJECTÉ` d'avoir un impact sur le texte environnant. -<p>Bien que le même effet de rendu puisse être créé avec la règle CSS <a href="/fr/docs/Web/CSS/unicode-bidi"><code>unicode-bidi</code></a><code> : isolate</code> sur un élément <a href="/fr/docs/Web/HTML/Element/span"><code><span></code></a> 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> +Bien que le même effet de rendu puisse être créé avec la règle CSS [`unicode-bidi`](/fr/docs/Web/CSS/unicode-bidi)` : isolate` sur un élément [`<span>`](/fr/docs/Web/HTML/Element/span) ou toute méthode de formatage du texte, la sémantique est ici uniquement portée par l'élément `<bdi>`. 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>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> +Utiliser `<span dir="auto">` aura le même effet qu'utiliser `<bdi>` mais la sémantique portée sera moindre. <table class="properties"> <tbody> <tr> - <th scope="row"><a href="/fr/docs/Web/Guide/HTML/Content_categories">Catégories de contenu</a></th> - <td><a href="/fr/docs/Web/Guide/HTML/Content_categories#flow_content">Contenu de flux</a>, <a href="/fr/docs/Web/Guide/HTML/Content_categories#phrasing_content">contenu phrasé</a>, <a href="/fr/docs/Web/Guide/HTML/Content_categories#palpable_content">contenu tangible</a>.</td> + <th scope="row"> + <a href="/fr/docs/Web/Guide/HTML/Content_categories" + >Catégories de contenu</a + > + </th> + <td> + <a href="/fr/docs/Web/Guide/HTML/Content_categories#flow_content" + >Contenu de flux</a + >, + <a href="/fr/docs/Web/Guide/HTML/Content_categories#phrasing_content" + >contenu phrasé</a + >, + <a href="/fr/docs/Web/Guide/HTML/Content_categories#palpable_content" + >contenu tangible</a + >. + </td> </tr> <tr> <th scope="row">Contenu autorisé</th> - <td><a href="/fr/docs/Web/Guide/HTML/Content_categories#phrasing_content">Contenu phrasé</a>.</td> + <td> + <a href="/fr/docs/Web/Guide/HTML/Content_categories#phrasing_content" + >Contenu phrasé</a + >. + </td> </tr> <tr> <th scope="row">Omission de balises</th> - <td>Aucune, la balise d'ouverture et la balise de fermeture sont obligatoires.</td> + <td> + Aucune, la balise d'ouverture et la balise de fermeture sont + obligatoires. + </td> </tr> <tr> <th scope="row">Parents autorisés</th> - <td>Tout élément acceptant du <a href="/fr/docs/Web/Guide/HTML/Content_categories#phrasing_content">contenu phrasé</a>.</td> + <td> + Tout élément acceptant du + <a href="/fr/docs/Web/Guide/HTML/Content_categories#phrasing_content" + >contenu phrasé</a + >. + </td> </tr> <tr> - <th scope="row">Rôle ARIA implicite</th> - <td><a href="https://www.w3.org/TR/html-aria/#dfn-no-corresponding-role">Pas de rôle correspondant</a>.</td> + <th scope="row">Rôle ARIA implicite</th> + <td> + <a href="https://www.w3.org/TR/html-aria/#dfn-no-corresponding-role" + >Pas de rôle correspondant</a + >. + </td> </tr> <tr> <th scope="row">Rôles ARIA autorisés</th> @@ -83,91 +115,103 @@ browser-compat: html.elements.bdi </tr> <tr> <th scope="row">Interface DOM</th> - <td><a href="/fr/docs/Web/API/HTMLElement"><code>HTMLElement</code></a></td> + <td> + <a href="/fr/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> + </td> </tr> </tbody> </table> -<h2 id="attributes">Attributs</h2> - -<p>Comme tous les éléments HTML, cet élément dispose des <a href="/fr/docs/Web/HTML/Global_attributes">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> +## Attributs -<h2 id="examples">Exemples</h2> +Comme tous les éléments HTML, cet élément dispose des [attributs universels](/fr/docs/Web/HTML/Global_attributes). Cependant il a une sémantique légèrement différente. En effet, l'attribut **`dir`** n'est pas hérité. S'il n'est pas renseigné, sa valeur par défaut sera `auto` et le navigateur décidera de la direction à appliquer selon le contenu de l'élément si aucune valeur parmi `"rtl"`, `"ltr"` n'est fournie. -<h3 id="Gauche_à_droite_sans_bdi">Gauche à droite sans bdi</h3> +## Exemples -<p>Cet exemple affiche les gagnants d'une compétition grâce à des éléments <a href="/fr/docs/Web/HTML/Element/span"><code><span></code></a>. Ici, les noms ne s'écrivent que de gauche à droite et le résultat s'affiche correctement :</p> +### Gauche à droite sans bdi -<pre class="brush: html"><ul> - <li><span class="name">Henrietta Boffin</span> - 1<sup>re</sup> place</li> - <li><span class="name">Jerry Cruncher</span> - 2<sup>e</sup> place</li> -</ul></pre> +Cet exemple affiche les gagnants d'une compétition grâce à des éléments [`<span>`](/fr/docs/Web/HTML/Element/span). Ici, les noms ne s'écrivent que de gauche à droite et le résultat s'affiche correctement : +```html +<ul> + <li><span class="name">Henrietta Boffin</span> - 1<sup>re</sup> place</li> + <li><span class="name">Jerry Cruncher</span> - 2<sup>e</sup> place</li> +</ul> +``` -<pre class="brush: css hidden">body { +```css hidden +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> +} +``` + +{{EmbedLiveSample("Gauche_à_droite_sans_bdi", "100%", 150)}} -<p>{{EmbedLiveSample("Gauche_à_droite_sans_bdi", "100%", 150)}}</p> +### Texte sans \<bdi> avec deux directionnalités -<h3 id="no_<bdi>_with_rtl_text">Texte sans <bdi> avec deux directionnalités</h3> +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 « `- 1` » sera captée par le texte en RTL et le résultat sera confus : -<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> +#### Exemple sans bidi -<h4>Exemple sans bidi</h4> -<pre class="brush: html"><ul> - <li><span class="name">اَلأَعْشَى</span> - 1<sup>re</sup> place</li> - <li><span class="name">Jerry Cruncher</span> - 2<sup>e</sup> place</li> -</ul></pre> +```html +<ul> + <li><span class="name">اَلأَعْشَى</span> - 1<sup>re</sup> place</li> + <li><span class="name">Jerry Cruncher</span> - 2<sup>e</sup> place</li> +</ul> +``` -<pre class="brush: css hidden">body { +```css hidden +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> +} +``` -<p>{{EmbedLiveSample("Exemple_sans_bidi", "100%", 150)}}</p> +{{EmbedLiveSample("Exemple_sans_bidi", "100%", 150)}} -<h3 id="using_<bdi>_with_ltr_and_rtl_text">Texte avec <bdi> et deux directionnalités</h3> +### Texte avec \<bdi> et deux directionnalités -<p>Pour éviter cet écueil, on pourra utiliser <code><bdi></code> pour séparer le contenu :</p> +Pour éviter cet écueil, on pourra utiliser `<bdi>` pour séparer le contenu : -<h4>Exemple avec bidi</h4> +#### Exemple avec bidi -<pre class="brush: html"><ul> - <li><bdi class="name">اَلأَعْشَى</bdi> - 1<sup>re</sup> place</li> - <li><bdi class="name">Jerry Cruncher</bdi> - 2<sup>e</sup> place</li> -</ul></pre> +```html +<ul> + <li><bdi class="name">اَلأَعْشَى</bdi> - 1<sup>re</sup> place</li> + <li><bdi class="name">Jerry Cruncher</bdi> - 2<sup>e</sup> place</li> +</ul> +``` -<pre class="brush: css hidden">body { +```css hidden +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> +} +``` -<p>{{EmbedLiveSample("Exemple_avec_bidi", "100%", 150)}}</p> +{{EmbedLiveSample("Exemple_avec_bidi", "100%", 150)}} -<h2 id="specifications">Spécifications</h2> +## Spécifications -<p>{{Specifications}}</p> +{{Specifications}} -<h2 id="browser_compatibility">Compatibilité des navigateurs</h2> +## Compatibilité des navigateurs -<p>{{Compat}}</p> +{{Compat}} -<h2 id="see_also">Voir aussi</h2> +## Voir aussi -<ul> - <li><a href="https://www.w3.org/International/articles/inline-bidi-markup/">Le balisage en ligne et texte bidirectionnel en HTML (W3C)</a> (en anglais)</li> - <li><a href="https://www.w3.org/International/articles/inline-bidi-markup/uba-basics">Les bases de l'algorithme bidirectionnel Unicode (W3C)</a> (en anglais)</li> - <li>Un élément HTML connexe : <a href="/fr/docs/Web/HTML/Element/bdo"><code><bdo></code></a></li> - <li>Les propriétés CSS <a href="/fr/docs/Web/CSS/direction"><code>direction</code></a> et <a href="/fr/docs/Web/CSS/unicode-bidi"><code>unicode-bidi</code></a></li> -</ul> +- [Le balisage en ligne et texte bidirectionnel en HTML (W3C)](https://www.w3.org/International/articles/inline-bidi-markup/) (en anglais) +- [Les bases de l'algorithme bidirectionnel Unicode (W3C)](https://www.w3.org/International/articles/inline-bidi-markup/uba-basics) (en anglais) +- Un élément HTML connexe : [`<bdo>`](/fr/docs/Web/HTML/Element/bdo) +- Les propriétés CSS [`direction`](/fr/docs/Web/CSS/direction) et [`unicode-bidi`](/fr/docs/Web/CSS/unicode-bidi) |