如果用户可以使用语言rtl或ltr,如何自动更改输入字段的CSS方向属性
示例:如果我使用阿拉伯语言,文本字段方向将是rtl,如果我想写一个新文本,我切换到英语语言文本字段内的方向(`text-align:left)将自动为ltr
您可以在此处使用值为auto
的全局HTML5属性dir
,如下所示:
从规格:
auto
关键字映射到auto状态表示元素的内容是显式嵌入的文本,但是使用元素的内容以编程方式确定方向(如下所述)。注意 :此状态使用的启发式非常粗糙(它只是查看具有强方向性的第一个字符,其方式类似于双向算法中的段落级别确定)。 当文本的方向确实未知并且不能应用更好的服务器端启发式时,作者被要求仅将此值用作最后的手段。
正如这句话所暗示的那样,最好在服务器端找出应该使用哪个方向,但如果你无法知道它,你可以使用它。
谢谢你的帮助,我使用javascript来解决这个问题,在这段代码中我使用了jquery框架,它只适用于阿拉伯语,对于其他语言你必须编辑charCodeAt(0)比较值。
$('#input_ar').keyup(function(){ if ((($(this).val().charCodeAt(0) > 0x600) && ($(this).val().charCodeAt(0) < 0x6FF)) || ($(this).val()=="")) { $('#search_input').css("direction","rtl"); } else { $('#search_input').css("direction","ltr"); } });
所需的aaaa和css是“方向”,值为“ltr”或“rtl”
CSS:
textarea.rtl { direction:rtl; } textarea.ltr { direction:ltr; }
要么
document.getElementById("myTextArea").style.direction = "rtl"
所有主流浏览器都支持。
您将遇到的第一个问题是JavaScript无法直接检测用户的语言设置,该值仅显示在HTTP的“Accept-Language”标头中,因此您必须在服务器端执行某些操作才能获得此值将它传递给JavaScript。 例如,在PHP中:
$headers = apache_request_headers(); $ltr_languages = array("en-gb", "en-us", ...'); // a list of ltr languages to detect if (in_array($headers["Accept-Language"], $ltr_languages)) { // some JavaScript or CSS to set the text ltr; } else { // some JavaScript or CSS to set the text rtl; }
body{direction: rtl;} *[dir="ltr"] { direction: ltr; unicode-bidi: embed; } *[dir="rtl"] { direction: rtl; unicode-bidi: embed; } bdo[dir="ltr"] { direction: ltr; unicode-bidi: bidi-override; } bdo[dir="rtl"] { direction: rtl; unicode-bidi: bidi-override; }