2013-04-26 8 views
3

У меня есть проблема, когда пользователь пытается писать английские слова после того, как арабские слова, т.е. C++ لغة برمجةанглийский с арабского языка в РТЛ направлении

браузер отображать его как этот ++C لغة برمجة.

Можно ли решить эту проблему с помощью CSS?

Edited

Я решить таким образом. http://jsfiddle.net/PfjdE/

HTML

<div id="text">لغة برمجة C++</div> 

CSS

#text { 
    direction: rtl; 
} 
#text:after { 
    content: 'a'; 
    color: transparent; 
} 

Я дам вопрос открытым в случае, если кто-то найти лучшее решение.

+1

Это действительно веселая проблема –

+1

@NullPointer Черт, я не могу даже правильно выбрать текст и как насчет этого? http://jsfiddle.net/aX7xV/ –

+0

Возможный дубликат [use text-align smartly (если английский dir = ltr if arabic dir = rtl)] (http://stackoverflow.com/questions/11787351/use-text- align-smartly-if-english-dir-ltr-if-arabic-dir-rtl) –

ответ

5

Если речь идет о содержимом страницы, противоположном прямому вводу пользователя (формулировка вопроса предполагает, что последний, в то время как ваш jsfiddle - первый), и цель состоит в том, чтобы добиться правильного направления в данном конкретном случае, тогда более чистое решение, чем ваше jsfiddle (который присоединяет латинские буквы и пытается сделать его невидимым) будет таким:

#text { 
    direction: rtl; 
} 
#text:after { 
    content: '\200e'; 
} 

добавляя U + 200E влево-RIGHT MARK, вы делаете «C++» отображаются слева направо.

Но такие вещи не предназначены для решения CSS, поскольку вам нужно попасть в части текста, которые недоступны в CSS, если только не сделаны элементы. Таким образом, вы должны использовать разметку как

<div id="text">لغة برمجة <span class="ltr">C++</span></div> 

с кодом CSS

.ltr { unicode-bidi: embed; direction: ltr; } 

Cf. до Direction ltr in a rtl HTML page (на самом деле текущий вопрос может быть дублирован для него).

Смежные вопросы