我有以下html:
<div dir="rtl">
<span>"arabic 1"</span>
<span>"عربي 2"</span>
<span>"arabic 3"</span>
<span>"arabic 4"</span>
</div>
我所做的只是让这些spans
以与从右到左相同的顺序出现,因为它们主要包含阿拉伯语文本,但也可能包含任何其他语言。
我更喜欢CSS解决方案而不是html属性(以获得更大的灵活性)
默认情况下,span
元素具有 unicode-bidi
属性的值normal
。这意味着,实际上,连续的span
元素在双向格式中被视为一个单元。在示例示例中,最后两个span
元素仅包含拉丁字母、空格、数字和 Ascii 引号,因此它们将被视为一个字符串"arabic 3" "arabic 4"
,因此将从左到右呈现。
如果在span
元素上设置unicode-bidi: embed
,则它们将被视为根据其父元素的 direction
属性(由 HTML dir
属性隐式设置)设置的布局方向放置的单元。
<style>
span { unicode-bidi: embed; }
</style>
<div dir="rtl">
<span>"arabic 1"</span>
<span>"عربي 2"</span>
<span>"arabic 3"</span>
<span>"arabic 4"</span>
</div>
使用 flexbox,您可以将父元素的显示设置为 flex
,然后添加 flex-direction: row-reverse
以反转元素的顺序;
.parent {
display: flex;
flex-direction: row-reverse;
}
<div class="parent">
<span>"arabic 1"</span>
<span>"عربي 2"</span>
<span>"arabic 3"</span>
<span>"arabic 4"</span>
</div>
或者,在某些情况下,您也可以将元素浮动到右侧:
.parent span {
float: right;
}
<div class="parent">
<span>"arabic 1"</span>
<span>"عربي 2"</span>
<span>"arabic 3"</span>
<span>"arabic 4"</span>
</div>
还值得指出的是,还有一个direction
属性。您可以将值设置为 rtl
...但这与您拥有的direction="rtl"
属性相同。
.parent {
direction: rtl;
}
<div class="parent">
<span>"arabic 1"</span>
<span>"عربي 2"</span>
<span>"arabic 3"</span>
<span>"arabic 4"</span>
</div>