我阅读了另一个答案中的链接,但我仍然有一些疑问。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
属性设置了文本的基本方向,技术上是不正确的吗?
让我们考虑另一个场景。one
、two
和three
被声明为内联块,覆盖它们默认的内联显示类型:
<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属性设置基本方向。定向上下文)用于排列相同方向的字符序列。阅读你的其他问题的答案,以更好地理解细节。