html - 为什么 dir ="rtl"会改变顺序,但只是有时?

标签 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">

渲染成一个单词

为什么第一种情况下顺序调换了,而第二种情况下顺序没有调换?

direction of HTML input contents changes with content

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

最佳答案

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/

相关文章:

javascript - 如何使 1 个 css 值依赖于另一个?

html - 如何在CSS中将水平列表对齐到中心

html - 内容占据页眉和页脚之间的所有空间

javascript - 如果选中,如何更改 <option> 的输出值?

input - React Js PropTypes 需要无类型

html - web Grid 列传递样式类

html - 为什么在 HTML 中使用 GET 方法时提交按钮值被传递?

html - 更改输入框 : input area with CSS/HTML

javascript - 从选择范围中删除节点后,ExecCommand 在 Chrome 60 中无法正常工作

html - Bootstrap css 表禁用 Chrome 中的输入