为什么dir =“ rtl”更改顺序,但有时会更改?

时间:2018-12-27 15:47:59

标签: html css input right-to-left direction

为什么

<input type="text" dir="rtl" value="08/15 word">

渲染到word 08/15而不是08/15 word

为什么

<input type="text" dir="rtl" value="one word">

渲染到one word吗?

为什么在第一种情况下切换顺序,而在第二种情况下却不切换?

direction of HTML input contents changes with content

https://jsfiddle.net/powtac/4aLn71mb/

2 个答案:

答案 0 :(得分:1)

dir=rtl给出了文本的基本方向。在该文本中,带有拉丁字母的单词仍然会从左到右书写,并且带有拉丁字母的多个单词(即英语句子)也会从左到右排序!

例如,阿拉伯语,沿dir=ltr(默认)的基本方向:无论如何,它都会从右到左书写,即使环境另有说明,多个阿拉伯词也将从右到左排序。

为此,浏览器(或通常的文本渲染器)使用Unicode bidi算法。该算法本身需要知道字符的方向性,这也是Unicode的一部分。拉丁字母和阿拉伯字母具有较强的方向性,而“正常”数字的从左至右方向则较弱。

在弱和强之间进行了区分,因为在ltr和rtl语言中都使用数字。数字本身始终是从左到右书写的,但是如果被强壮的rtl单词包围,则将按从右至左的顺序对单词进行排序;如果被强烈的ltr单词包围,则将按从左至右的顺序对单词进行排序。

如果数字不被强键入词包围,则使用基本方向。

您的ltr-“ 08/15”没有被ltr包围,因此它是从ltr单词“ word”放置rtl(基本方向)。

“一个单词”是两个有方向性的单词,因此它们本身是ltr的布局,这些单词也是ltr的布局。不管基本方向是什么。

尝试“第一08/15秒”,数字将被认为是更大的ltr句子的一部分,并列出了ltr。

答案 1 :(得分:0)

dir = RTL特性

  1. 数字(例如电话号码)中的数字顺序不是 与从左到右的写作不同。

  2. 当组合可以在RTL和LTR中使用的符号时     语言(例如句号,逗号或其他标点符号),         它们的显示位置将取决于文本的方向。         这是因为数据格式是从头开始的,但是         浏览器仍在沿RTL方向处理RTL字,并且         标点符号转换为         指定。

有关更多信息,请参见this article