2012-09-23 41 views

回答

14

unicode-bidi: embed;添加到您的CSS。應該做的伎倆 - updated Fiddle

你可以找到使用here

+1

謝謝,我想我知道一切在CSS ......--) – devmonster

+0

不客氣。有幾個屬性,你不會經常使用:) –

+0

jsfiddle代碼將'direction'設置爲'rtl'。我想你的意思是寫'ltr'。 –

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中的數字後面的連字符應用於HTML源代碼的技巧,以便在應用左對齊書寫時,連字符出現在數字的左側。

更正確的方法是:

  1. 使用unicode-bidi: bidi-override在CSS中,與direction在一起。這意味着在內容中將忽略固有方向性,並且應用direction指定的順序。
  2. 在CSS中使用unicode-bidi: embed以及direction。這創建了一個「方向島」,其中周圍的文本不影響方向性。當元素內容僅包含「中性」字符時,direction屬性設置文本方向。
  3. 在HTML中使用<bdo>元素,並使用dir屬性。這是方法2的HTML副本,更好的是,這不是關於風格的表達性建議(這是CSS最適用和最擅長的),而是關於如何正確處理,處理方向性中的一些基本問題。
  4. 在字符串前後使用從左到右和從右到左的標記。它們可以分別用HTML表示爲&lrm;&rlm;。這使得字符串之前的最後一個字符是一個從左到右的標記,如果它只包含「中性」字符,就會從左到右顯示。

這是一個複雜問題的簡化表示。無論如何,使用<bdo>可能是最好的方法。在所有的方法,方向性的設置應限制在儘可能小的字符串,在本例中,如-9:

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

用作減號的字符確實應該Unicode的減號「 - 」 U + 2212 MINUS SIGN,在HTML中表示爲&minus;,但這並不影響方向性問題。

+0

+1以獲得廣泛的答案 –

2

除了Henrik的回答,我會在減號前添加一個LRM控制字符,像這樣:

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

這樣減號得到9之前放置(這可能是你想要的)

這個microsoft doc解釋LRM控制字符以及其他控制字符。

相關問題