bdo要素 - 双方向アルゴリズムの上書き
bdo要素でマークアップした範囲には、双方向アルゴリズムよりも優先して文字の方向を適用できます。文字の方向を明確にdir属性で指定しなければいけません。
概要
- 名前
- bdo (BIDI overwrite)
- カテゴリ
- Flow content
- Phrasing content
- Palpable content
- 配置できる場所
- Phrasing contentが期待される場所。
- コンテンツモデル
- Phrasing content。
- タグの省略
- 開始タグも終了タグも省略できません。
- コンテンツ属性
- dir - 文字の方向。
- DOM Interface
- HTMLElement
- デフォルトのスタイル
bdo { unicode-bidi: bidi-override; }
bdo, bdo[dir] { unicode-bidi: isolate-override; }
bdo { unicode-bidi: bidi-override; }
- 仕様書
- https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-bdo-element
属性
dir属性
この属性はグローバル属性の1つですが、bdo要素では役割が変わります。auto
以外の値を指定しなければいけません。bdo要素ではdir属性を省略してはいけません。
グローバル属性
全てのタグで利用できるグローバル属性を指定できます。
チュートリアル
ユーザーエージェントは、日本語や英語は左から右に、アラビア語は右から左に表示します。言語によって表示される文字の方向を振り分けるこの働きを双方向アルゴリズムと呼びます。
<!-- このコードは編集できます。 -->
<h2>左から右(→)</h2>
<p dir="auto">ありがとうございます。</p>
<p dir="auto">Thank you very much.</p>
<h2>右から左(←)</h2>
<p dir="auto">شكرا جزيلا.</p>
さて、グローバル属性であるdir属性は、文字の方向をヒントとしてブラウザに与えますが、実際の表示を左右するものではありません。例えば、次のようにマークアップしても、表示される文字の方向は変わらないということです。SYNCER
と表示されるのを確認しましょう。
<!-- このコードは編集できます。 -->
<!-- bdo要素以外でdir属性を指定 -->
<p><span dir="rtl">SYNCER</span></p>
bdo要素にdir属性を指定すると、その方向で文字を表示するよう強制できます。bdo要素のoは、overwrite(上書き)のoです。双方向アルゴリズムを上書きしてしまうのが特徴というわけです。
<!-- このコードは編集できます。 -->
<!-- bdo要素でdir属性を指定 -->
<p><bdo dir="rtl">SYNCER</bdo></p>
デモ
bdo要素のデモです。
<!-- このコードは編集できます。 -->
<h2>bdo要素にdir=rtlの属性を指定</h2>
<p><bdo dir="rtl">SYNCER</bdo></p>
<h2>span要素にdir=rtlの属性を指定</h2>
<p><span dir="rtl">SYNCER</span></p>
サポート状況
クリックすると、バージョンごとの対応状況を確認できます。
Features | Chrome | Firefox | Safari | Edge | IE | Opera | iOS Safari | Android |
---|---|---|---|---|---|---|---|---|
bdo要素 | ● | ● | ● | ● | ● | ● | ● | ● |
dir属性 | ● | ● | ● | ● | ● | ● | ● | ● |
関連記事
- dir属性
- dir属性は、要素のテキストの文字の方向について、ユーザーエージェントにヒントを与えるための属性です。この属性は文字レベルではなく要素レベルで適用されて、表示上はその方向に寄せられるだけです。例えば、rtlを指定したとしても、SYNCERという文字がRECNYSと、反対になって表示されるわけではありません。
- bdi要素
- bdi要素は、周囲の双方向アルゴリズムから分離させたい範囲をマークアップするための要素です。
- blockquote要素
- blockquote要素は、内容が、外部から引用したものであることを表す要素です。この要素はブロック要素です。インラインレベルでマークアップしたい場合はq要素を利用しましょう。
- abbr要素
- abbr要素は省略語や頭字語を表す要素です。要素の中身に省略語や頭字語を指定して、title属性で正式名称を指定します。人間だけでなく、ユーザーエージェントに対して省略語であることを示せます。