bdi要素とbdo要素
bdiとbdoでテキストの方向性を分離・上書きします
「bdi要素とbdo要素」はCoddyKit上の無料HTML Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはHTML Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 HTML Academyコースには全4レッスンが含まれています。
Bidi制御要素が必要な理由
Unicode Bidirectional Algorithmは通常、方向が混在するテキストを適切に処理します。しかし、周囲のテキストの方向がユーザー提供の名前によって変わらないように分離したり、コードブロック内で特定の方向を強制したりするために、上書きが必要になる場合があります。
bdi要素
<bdi>(双方向分離)は、コンテンツを独立したbidiコンテキストとして扱います。<bdi>内のテキストの方向が外側のテキストの方向に影響を与えることはなく、逆も同様です。
<p>User <bdi>{username}</bdi> posted at 12:34</p>ユースケース:ユーザー名
英語とアラビア語の名前が混在するユーザー一覧では、アラビア語の名前のRTLの流れが周囲のテキストに「漏れ出す」おそれがあります。各名前を<bdi>で囲むと分離できるため、名前ごとの方向にかかわらずレイアウトが一貫します。
bdo要素
<bdo dir="rtl">(双方向上書き)は、コンテンツに特定の方向を強制し、自然なbidiの解決を上書きします。自然な方向とは異なる方向でテキストを表示したい場合に使用します。たとえば、RTLページ内でコードスニペットをLTRとして表示する場合です。
<bdo dir="ltr">someEnglishCode();</bdo>dirとの違い
通常の要素に設定したdir属性は基準方向を設定しますが、その内部ではbidiアルゴリズムが引き続き適用されます。<bdo>はコンテンツに対するbidiアルゴリズムを無効にします。そのため、スクリプトにかかわらず、すべての文字が指定された方向に厳密に流れます。
bdiを使用する場面
ユーザー生成テキストを周囲のUIに埋め込む場合は、いつでも使用してください。たとえば、チャットヘッダーの名前、コメント内のユーザー名、フィード項目のタイトルなどです。分離によって、ユーザーの入力内容が周囲のUIのレイアウトに影響しないことが保証されます。
bdoを使用する場面
ほとんどありません。主な正当な用途は、双方向テキストについて説明する場合(文字列を反転するとどのように見えるかを示す場合)や、自然な双方向テキストの解決によって視覚的な順序が誤ってしまう、タグ付けが不適切なデータを修正する場合です。
dir="auto"との組み合わせ
方向が不明なユーザーコンテンツには、二重に安全性を高めるために<bdi dir="auto">を組み合わせます。自動検出によってコンテンツから基本方向が選択され、bdiによってその方向が周囲のテキストに漏れ出すのを防ぎます。
ブラウザーの対応状況
bdiとbdoは、すべてのモダンブラウザーでサポートされています。これらはHTML5の一部であり、長年にわたって安定して動作しています。古いバージョンのIEにはbdiがありませんが、現在では実質的に廃止されているため、モダンなサイトではbdiを自由に使用できます。
アクセシビリティ
スクリーンリーダーはbidiの分離を尊重します。内のテキストは、langが設定されていればその言語の音声で読み上げられ、周囲の文脈が入り込むことはありません。bdiは、分離されたフレーズの前後に適切な間を入れて音声合成するのにも役立ちます。
よくあるパターン:テンプレートでのi18n
プレースホルダーを含むテンプレート("Welcome, {name}")では、プレースホルダーを<bdi>で囲む必要があります:Welcome, <bdi>{name}</bdi>。ユーザー名が英語、アラビア語、混在のいずれであっても、挨拶文の他の部分に影響を与えず正しく表示できます。
理解度チェック
との実用上の違いは何ですか?
まとめ
bdiは、セクション内のテキスト方向が周囲に影響を与えないよう分離します。テンプレート内の名前など、埋め込まれたユーザーコンテンツに使用します。bdoは特定の方向を強制し、bidiの処理結果を上書きします。教育用の例以外では、ほとんど必要ありません。方向が不明な言語のユーザー入力を安全に扱うには、bdiとdir="auto"を組み合わせます。
よくある質問
「bdi要素とbdo要素」レッスンは無料ですか?
はい。「bdi要素とbdo要素」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、HTML Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 HTML Academyコースには全4レッスンが含まれています。
「bdi要素とbdo要素」で何を学びますか?
bdiとbdoでテキストの方向性を分離・上書きします ブラウザで直接実行するハンズオンコードでHTML Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
HTML Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのHTML Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「bdi要素とbdo要素」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このHTML Academyレッスンでコードを書いて実行できますか?
はい。すべてのHTML Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。