rtl HTML页面中的方向ltr

dev*_*ter 11 html css right-to-left

我试图在rtl HTML页面中显示负数.

标签似乎没有响应我的 direction: ltr

我写了一个jsFiddle来显示相反的场景(试图从右到左显示).

Hen*_*ell 14

添加unicode-bidi: embed;到您的CSS.应该做的诀窍 - 更新小提琴

你可以在这里找到用法


Juk*_*ela 7

为什么direction: ltr不在数字的左边放置减号是因为周围的字符是从右到左的字符,使得"中性"字符(如数字和减号(或连字符))采用该方向性.该direction属性会影响框的布局方向和相关问题,而不会影响文本的书写方向.

考虑以下:

<p>? <label id="ProfitShk" class="labelVal">-9 ?</label> ?
<p>a <label id="ProfitShk" class="labelVal">-9 ?</label> b
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,连字符出现在数字9的右侧,跟随周围文本的书写方向.在第二种情况下,顺序是相反的,因为周围的字符是拉丁字母,具有固有的从左到右的方向性.

这是一个棘手的问题,希伯来语中的一些页面似乎使用了将数字后面的连字符放在HTML源代码中的技巧,因此当应用从右到左书写时,连字符出现在数字的左侧.

更合适的方法是:

  1. unicode-bidi: bidi-override在CSS中使用,以及direction.这意味着在内容中忽略固有方向性并direction应用指定的顺序.
  2. unicode-bidi: embed在CSS中使用,以及direction.这创建了一个"方向性岛",周围的文本不会影响方向性.当元素内容仅包含"中性"字符时,该direction属性设置文本方向.
  3. 使用<bdo>HTML中的元素和dir属性.这是方法2的HTML对应物,并且在某种意义上更好,这不是关于风格的表现性建议(这是CSS的用途和做得最好),而是关于正确的事情,处理方向性中的一些基本问题.
  4. 在字符串前后使用从左到右和从右到左的标记.他们可以在HTML中表示为&lrm;&rlm;分别.这使得字符串前面的最后一个字符是从左到右的标记,如果它只包含"中性"字符,则会从左到右显示它.

这是一个复杂问题的简化表述.无论如何,使用<bdo>可能是最好的方法.在所有方法中,方向性的设置应限制为尽可能小的字符串,例如示例中的-9:

<p>? <label id="ProfitShk" class="labelVal"><bdo dir="ltr">-9</bdo> ?</label> ?
Run Code Online (Sandbox Code Playgroud)

用作减号的字符应该是Unicode减去" - "U + 2212 MINUS SIGN,可以用HTML表示&minus;,但这不会影响方向性问题.