0Pricing
HTML Academy · 课时

bdi 和 bdo 元素

使用 bdi 和 bdo 隔离并覆盖文本方向

bdi 和 bdo 元素 是 CoddyKit 上的免费 HTML Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 HTML Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 HTML Academy 课程共包含 4 节课。

为什么需要双向控制元素

Unicode 双向算法通常可以很好地处理混合方向文本,但有时仍需要覆盖它——例如隔离用户提供的姓名,防止其改变周围文本的方向,或在代码块中强制使用特定方向。

bdi 元素

<bdi>(双向隔离)会将其内容视为独立的双向上下文。<bdi> 内部文本的方向不会影响外部文本的方向,反之亦然。

<p>User <bdi>{username}</bdi> posted at 12:34</p>

使用场景:用户姓名

混合显示英文和阿拉伯文姓名的用户列表,可能会让阿拉伯文姓名的 RTL 流向“泄漏”到周围文本中。将每个姓名包裹在 <bdi> 中即可将其隔离:无论每个姓名实际使用何种方向,布局都能保持一致。

bdo 元素

<bdo dir="rtl">(双向覆盖)会强制其内容使用特定方向,覆盖自然的双向解析结果。当您希望以非自然方向显示文本时可以使用它——例如,在 RTL 页面中以 LTR 渲染代码片段。

<bdo dir="ltr">someEnglishCode();</bdo>

与 dir 的区别

普通元素上的 dir 属性会设置基本方向,但双向算法仍会在其中应用。<bdo> 会关闭其内容的双向算法——每个字符都会严格按照指定方向排列,不论其所属文字系统的自然方向是什么。

何时使用 bdi

每当您将用户生成的文本嵌入周围界面时都应使用它,例如聊天标题中的姓名、评论中的用户名以及信息流条目中的标题。隔离可以确保界面布局不受用户输入内容的方向影响。

何时使用 bdo

很少使用。其主要的合理用途是讲解双向文本(展示字符串反转后的样子),或修正标签错误的数据,因为自然的双向文本解析会产生错误的视觉顺序。

与 dir="auto" 结合使用

对于方向未知的用户内容,请结合使用 <bdi dir="auto"> 来实现双重保护:自动检测会根据内容选择基础方向,而 bdi 会阻止该方向泄漏到周围文本中。

浏览器支持

bdi 和 bdo 得到所有现代浏览器的支持。它们是 HTML5 的一部分,多年来一直很稳定。较旧版本的 IE 不支持 bdi,但这些版本实际上已经过时;现代网站可以放心使用 bdi。

无障碍访问

屏幕阅读器会遵循双向文本隔离:<bdi> 内的文本会使用其自身语言的语音播报(设置了 lang 时),不会受到周围上下文的干扰。bdi 还有助于文字转语音在隔离短语的前后生成适当的停顿。

常见模式:模板中的 i18n

包含占位符("欢迎,{name}")的模板应将占位符包裹在 <bdi> 中:Welcome, <bdi>{name}</bdi>。无论用户名是英语、阿拉伯语还是混合内容,都能正确渲染,而不会干扰问候语的其余部分。

知识检查

与 的实际区别是什么?

总结

bdi 会隔离某个部分的文本方向,使其不影响周围内容——适合用于模板中的姓名等嵌入式用户内容。bdo 会强制指定方向,覆盖双向文本规则;除了教学示例外,很少需要使用。将 bdi 与 dir="auto" 结合,可安全处理语言未知的用户提供文本。

常见问题解答

「bdi 和 bdo 元素」课时是免费的吗?

是的 — 「bdi 和 bdo 元素」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 HTML Academy 课程的其余内容,请升级到 CoddyKit PRO。 HTML Academy 课程共包含 4 节课。

「bdi 和 bdo 元素」这节课中我会学到什么?

使用 bdi 和 bdo 隔离并覆盖文本方向 你通过在浏览器中直接运行的动手代码来练习 HTML Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 HTML Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 HTML Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「bdi 和 bdo 元素」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 HTML Academy 课中编写并运行代码吗?

能。每节 HTML Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. lang 属性与屏幕阅读器
  2. 用于从右向左文本的 dir=rtl
  3. bdi 和 bdo 元素
  4. charset 与 Unicode:处理特殊字符
← 返回 HTML Academy