Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

<bdi>: The Bidirectional Isolate element

BaselineWidely available

The<bdi>HTML element tells the browser's bidirectional algorithm to treat the text it contains in isolation from its surrounding text. It's particularly useful when a website dynamically inserts some text and doesn't know the directionality of the text being inserted.

Try it

<h1>World wrestling championships</h1><ul>  <li><bdi>Evil Steven</bdi>: 1st place</li>  <li><bdi>François fatale</bdi>: 2nd place</li>  <li><span>سما</span>: 3rd place</li>  <li><bdi>الرجل القوي إيان</bdi>: 4th place</li>  <li><span dir="auto">سما</span>: 5th place</li></ul>
html {  font-family: sans-serif;}bdi {  /* Add your styles here */}.name {  color: red;}

Bidirectional text is text that may contain both sequences of characters that are arranged left-to-right (LTR) and sequences of characters that are arranged right-to-left (RTL), such as an Arabic quotation embedded in an English string. Browsers implement theUnicode Bidirectional Algorithm to handle this. In this algorithm, characters are given an implicit directionality: for example, Latin characters are treated as LTR while Arabic characters are treated as RTL. Some other characters (such as spaces and some punctuation) are treated as neutral and are assigned directionality based on that of their surrounding characters.

Usually, the bidirectional algorithm will do the right thing without the author having to provide any special markup but, occasionally, the algorithm needs help. That's where<bdi> comes in.

The<bdi> element is used to wrap a span of text and instructs the bidirectional algorithm to treat this text in isolation from its surroundings. This works in two ways:

  • The directionality of text embedded in<bdi>does not influence the directionality of the surrounding text.
  • The directionality of text embedded in<bdi>is not influenced by the directionality of the surrounding text.

For example, consider some text like:

EMBEDDED-TEXT - 1st place

IfEMBEDDED-TEXT is LTR, this works fine. But ifEMBEDDED-TEXT is RTL, then- 1 will be treated as RTL text (because it consists of neutral and weak characters). The result will be garbled:

1 - EMBEDDED-TEXTst place

If you know the directionality ofEMBEDDED-TEXT in advance, you can fix this problem by wrappingEMBEDDED-TEXT in a<span> with thedir attribute set to the known directionality. But if you don't know the directionality - for example, becauseEMBEDDED-TEXT is being read from a database or entered by the user - you should use<bdi> to prevent the directionality ofEMBEDDED-TEXT from affecting its surroundings.

Though the same visual effect can be achieved using the CSS ruleunicode-bidi: isolate on a<span> or another text-formatting element, HTML authors should not use this approach because it is not semantic and browsers are allowed to ignore CSS styling.

Embedding the characters in<span dir="auto"> has the same effect as using<bdi>, but its semantics are less clear.

Attributes

Like all other HTML elements, this element supports theglobal attributes, except that thedir attribute behaves differently than normal: it defaults toauto, meaning its value is never inherited from the parent element. This means that unless you specify a value of eitherrtl orltr fordir, theuser agent will determine the correct directionality to use based on the contents of the<bdi>.

Examples

No bdi with only LTR

This example lists the winners of a competition using<span> elements only. When the names only contain LTR text the results look fine:

html
<ul>  <li><span>Henrietta Boffin</span> - 1st place</li>  <li><span>Jerry Cruncher</span> - 2nd place</li></ul>
body {  border: 1px solid #3f87a6;  max-width: calc(100% - 40px - 6px);  padding: 20px;  width: calc(100% - 40px - 6px);  border-width: 1px 1px 1px 5px;}

No bdi with RTL text

This example lists the winners of a competition using<span> elements only, and one of the winners has a name consisting of RTL text. In this case the- 1, which consists of characters with neutral or weak directionality, will adopt the directionality of the RTL text, and the result will be garbled:

html
<ul>  <li><span>اَلأَعْشَى</span> - 1st place</li>  <li><span>Jerry Cruncher</span> - 2nd place</li></ul>
body {  border: 1px solid #3f87a6;  max-width: calc(100% - 40px - 6px);  padding: 20px;  width: calc(100% - 40px - 6px);  border-width: 1px 1px 1px 5px;}

Using bdi with LTR and RTL text

This example lists the winners of a competition using<bdi> elements. These elements instruct the browser to treat the name in isolation from its embedding context, so the example output is properly ordered:

html
<ul>  <li><bdi>اَلأَعْشَى</bdi> - 1st place</li>  <li><bdi>Jerry Cruncher</bdi> - 2nd place</li></ul>
body {  border: 1px solid #3f87a6;  max-width: calc(100% - 40px - 6px);  padding: 20px;  width: calc(100% - 40px - 6px);  border-width: 1px 1px 1px 5px;}

Technical summary

Content categoriesFlow content,phrasing content, palpable content.
Permitted contentPhrasing content.
Tag omissionNone, both the starting and ending tag are mandatory.
Permitted parents Any element that acceptsphrasing content.
Implicit ARIA rolegeneric
Permitted ARIA rolesAny
DOM interfaceHTMLElement

Specifications

Specification
HTML
# the-bdi-element

Browser compatibility

See also

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp