2010-12-01 87 views
15

因此,电话号码始终是ltr(从左到右)。如何强制一段文字'方向ltr'在'方向rtl'段

在一个多语种的网站,我需要插入一个电话号码(相隔一个“+”前缀和数字“ - ”)工作文本段落里面有方向的RTL(对于课程的相关语言)

所以,我有这样的事情:

.ltr #test {direction:ltr} 
 
.rtl #test {direction:rtl} 
 
#phone {direction:ltr}
<div class="ltr"><p id="test">Please call to <span id="phone">+44-123-321</span> for some help.</p></div> 
 
<div class="rtl"><p id="test">Please call to <span id="phone">+44-123-321</span> for some help.</p></div>

当然这是不工作,因为“direction”仅适用于块元素和'span'是一个内联元素。我需要电话号码在段落内,所以我不能将'span'更改为'display:inline'

我很清楚吗?

如何使它工作?

+1

RTL算法通常会将数字考虑在内,因此无论容器的“LTR”或“RTL”如何,您都无需为数字正确呈现做任何事情。你真的看到这个问题,或者只是想抢先? – Oded 2010-12-01 15:04:04

+2

@Oded:我看到了。我认为,因为数字之间的'+'和' - ',它只是混淆了算法... – Jonathan 2010-12-01 15:05:36

+0

至少在阿拉伯语中,+符号应该放在电话号码的左侧,就像它在英语中一样。按照英文输入电话号码,首先输入“+”字符,然后输入左边的第一个数字,然后输入左边的第二个数字,依此类推。你可能试图修复一些实际上并不成问题的东西。 – Flimm 2017-12-09 11:19:35

回答

12

您可以使用Unicode方向标记性状只是+号前给予算法,它需要的提示。

它们是:

LTR: 0x200E 
RTL: 0x200F 

所以:

<p id="text">Please call to <span id="phone">&#x200F;+44-123-321</span> for some help</p>

this SO回答更多的细节。

19

尝试增加#phone {direction:ltr; display:inline-block}

+3

这实际上似乎是最正确的“风格”导向的答案 – tutuDajuju 2013-12-01 13:10:42

6

另一个选择可能是使用dir='ltr'属性,在您的内联元素:

<p id="text">Please call to <span dir='ltr'>+44-123-321</span> for some help</p> 

请注意,包括在你的HTML &#x200E;是使用dir='ltr'属性的那样糟糕。