rtl HTML页面中的方向ltr

时间:2012-09-23 13:39:43

标签: html css right-to-left

我正在尝试在rtl HTML页面中显示负数。

标签似乎没有回复我的direction: ltr

我写了jsFiddle来显示相反的情况(试图从右到左显示)。

3 个答案:

答案 0 :(得分:14)

unicode-bidi: embed;添加到您的CSS中。应该做的 - updated Fiddle

您可以找到用法here

答案 1 :(得分:7)

direction: ltr未在数字左侧放置减号的原因是周围的字符是从右到左的字符,使得“中性”字符如数字和减号(或连字符)取那方向性。 direction property会影响框和相关问题的布局方向,而不会影响文字的书写方向。

请考虑以下事项:

<p>א <label id="ProfitShk" class="labelVal">-9 ₪</label> ת
<p>a <label id="ProfitShk" class="labelVal">-9 ₪</label> b

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

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

更合适的方法是:

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

    <p>א <label id="ProfitShk" class="labelVal"><bdo dir="ltr">-9</bdo> ₪</label> ת
    

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

答案 2 :(得分:2)

除了Henrik的回答,我还会在减号之前添加一个LRM控制字符,如下所示:

<label id="ProfitShk" class="labelVal">&lrm;-9 ₪</label>​​​​​​​​​​​​​​​​​​​​​​

这样减号就会放在9之前(这可能是你想要的)

这个microsoft doc解释了LRM控制字符以及其他控制字符。