为什么
<input type="text" dir="rtl" value="08/15 word">
渲染为 word 08/15
而不是渲染为 08/15 word
?
为什么
<input type="text" dir="rtl" value="one word">
渲染成一个单词
?
为什么第一种情况下顺序调换了,而第二种情况下顺序没有调换?
最佳答案
dir=rtl
给出文本的基本方向。在该文本中,带有拉丁字母的单词仍将从左到右书写,多个带有拉丁字母的单词(即英语句子)也将从左到右排列!
对于例如,也是如此。 dir=ltr
中的阿拉伯语(默认)基本方向:无论如何,它都会从右到左书写,并且多个阿拉伯单词将从右到左排序,即使环境另有说明。
为了实现这一点,浏览器(或一般的文本渲染器)使用 Unicode bidi 算法。该算法本身需要知道字符的方向性,这也是 Unicode 的一部分。拉丁字母和阿拉伯字母具有较强的方向性,而“正常”数字具有较弱的从左到右的方向性。
弱和强之间的区别是因为 ltr 和 rtl 语言中都使用数字。数字本身总是从左到右书写,但如果被强 rtl 单词包围,它将按字序从右到左排列,如果被强 ltr 单词包围,它将按字序从左到右排列。
如果数字周围没有强类型文字,则使用基本方向。
你的ltr-“08/15”没有被ltr包围,所以它是从ltr-word“word”开始的rtl(基本方向)。
“one word”是两个强方向词,因此它们本身被布局为ltr,单词也被布局为ltr。无论基本方向是什么。
尝试“第一个 08/15 秒”,数字将被视为更大的 ltr 句子的一部分并布置 ltr。
关于html - 为什么 dir ="rtl"会改变顺序,但只是有时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53947553/