假设我们有许多将 'dir' 指定为 RTL 的 span 文本元素(2 个或更多):
<div dir="rtl">
<span>First-Element</span>
<span>Second-Element</span>
<span>Third-Element</span>
</div>
我们希望它们按从右到左的顺序出现:
Third-Element Second-Element First-Element
如果文本元素具有 RTL 方向性(来自阿拉伯语、波斯语、希伯来语等的文本),或者它们与 RTL 元素交错,则此方法可以正常工作:
<div dir="rtl">
<span>First-Element-RTL</span>
<span>Second-Element-RTL</span>
<span>Third Element-RTL</span>
</div>
或者:
<div dir="rtl">
<span>First-Element-LTR</span>
<span>Second-Element-RTL</span>
<span>Third Element-LTR</span>
</div>
但是,如果所有元素都是 LTR 方向性的,则使用语言的顺序,我们会得到不希望的顺序:
First-Element Second-Element Third-Element
我们如何才能实现元素的固定顺序,而与元素中文本的方向性无关——也就是说,技术(无论是 html 还是 css)应该与单个文本元素的语言无关。
当 span 元素的内容是可变的并由用户提供时,就会出现此问题,例如,用户名可以是 RTL 语言或英语。
编辑
我必须强调,我们讨论的是相对于彼此对文本跨度进行排序,而不是改变文本本身的流向,因此“English Text”应该按原样显示,而不是“txeT hsilgnE”。
编辑
这是一个简单的 HTML 片段,用于测试 Jukka 提供的答案。这显示为向右对齐的“bar foo”。它显示(至少在我的浏览器上)不需要{ unicode-bidi: bidi-override; }
在容器级别获得所需的结果。
<html>
<head>
<style type="text/css">
span { unicode-bidi: embed; }
</style>
</head>
<body>
<div dir="rtl">
<span>foo</span>
<span>bar</span>
</div>
</body>
</html>