dev*_*ter 11 html css right-to-left
我试图在rtl HTML页面中显示负数.
标签似乎没有响应我的 direction: ltr
我写了一个jsFiddle来显示相反的场景(试图从右到左显示).
为什么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源代码中的技巧,因此当应用从右到左书写时,连字符出现在数字的左侧.
更合适的方法是:
unicode-bidi: bidi-override在CSS中使用,以及direction.这意味着在内容中忽略固有方向性并direction应用指定的顺序.unicode-bidi: embed在CSS中使用,以及direction.这创建了一个"方向性岛",周围的文本不会影响方向性.当元素内容仅包含"中性"字符时,该direction属性设置文本方向.<bdo>HTML中的元素和dir属性.这是方法2的HTML对应物,并且在某种意义上更好,这不是关于风格的表现性建议(这是CSS的用途和做得最好),而是关于正确的事情,处理方向性中的一些基本问题.‎和‏分别.这使得字符串前面的最后一个字符是从左到右的标记,如果它只包含"中性"字符,则会从左到右显示它.这是一个复杂问题的简化表述.无论如何,使用<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表示−,但这不会影响方向性问题.