为什么dir属性不工作相同方向类型的内联文本,但工作在内联块文本



我阅读了另一个答案中的链接,但我仍然有一些疑问。dir属性设置文本的基方向。因此,如果我将One اثنان three的基本方向设置为ltr,那么它必须保持原样,如果我将dir设置为rtl,那么输出应该是three اثنان One。下面的脚本显示它按预期工作:

<div dir="ltr">
  one اثنان three
</div>
<div dir="rtl">
  one اثنان three
</div>

到目前为止一切顺利。dir属性证明了设置文本的基本方向,但令人惊讶的是,如果所包含的字母属于相同的强类型类别,rtl或ltr,则设置基本方向。例如,如果我将dir rtl设置为one two three,那么我期望dir强制改变基本方向并输出结果为three two one。下面的例子说明了它不是:

<div dir="ltr">  
  One two three  
</div>  
<div dir="rtl">  
  One two three  
</div>

MDN文章和w3c文章声称dir属性设置了文本的基本方向,技术上是不正确的吗?

让我们考虑另一个场景。onetwothree被声明为内联块,覆盖它们默认的内联显示类型:

    <div dir="rtl">
        <span style="display: inline-block">One</span>
        <span style="display: inline-block">Two</span>
        <span style="display: inline-block">Three</span>
    </div>

有趣的是,dir改变了内联文本的基本方向,而不是内联文本的基本方向。这里所有三个字母都是ltr强类型的,就像倒数第二个例子一样,但与那个例子相反,现在dir属性能够改变文本的基本方向。

MDN定义正确。您所看到的是Unicode双向算法的效果。dir属性设置基本方向。定向上下文)用于排列相同方向的字符序列。阅读你的其他问题的答案,以更好地理解细节。

最新更新