答案 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源代码中的技巧,因此当应用从右到左书写时,连字符出现在数字的左侧。
更合适的方法是:
unicode-bidi: bidi-override
以及direction
。这意味着内容中忽略了固有的方向性,并且应用了direction
指定的顺序。unicode-bidi: embed
以及direction
。这创建了一个“方向性岛”,周围的文本不会影响方向性。当元素内容仅包含“中性”字符时,direction
属性设置文本方向。<bdo>
属性在HTML中使用dir
元素。这是方法2的HTML对应物,并且在某种意义上更好,这不是关于风格的表现性建议(这是CSS的用途和做得最好),而是关于把事情弄清楚,处理方向性中的一些基本问题。‎
和‏
。这使得字符串前面的最后一个字符是从左到右的标记,如果它只包含“中性”字符,则会从左到右显示它。这是一个复杂问题的简化表述。无论如何,使用<bdo>
可能是最好的方法。在所有方法中,方向性的设置应限制为尽可能小的字符串,例如示例中的-9:
<p>א <label id="ProfitShk" class="labelVal"><bdo dir="ltr">-9</bdo> ₪</label> ת
用作减号的字符应该是Unicode减去“ - ”U + 2212 MINUS SIGN,在HTML中可以−
表示,但这不会影响方向性问题。
答案 2 :(得分:2)
除了Henrik的回答,我还会在减号之前添加一个LRM控制字符,如下所示:
<label id="ProfitShk" class="labelVal">‎-9 ₪</label>
这样减号就会放在9之前(这可能是你想要的)
这个microsoft doc解释了LRM控制字符以及其他控制字符。