"Right to left"不同方向跨度的顺序



我有以下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>

最新更新