多个内联跨度的从右到左方向
Right to left direction for multiple inline span
我有两个内联跨度,里面有一些英文字母。但是我需要方向是从右到左 (RTL),但是网页没有正确显示跨度。
第一个跨度:<span>4 Series Gran Coupe</span>
第二个跨度:<span>(1)</span>
他们应该是这样的:
(1) 4 Series Gran Coupe
我在网页上看到的是这样的:
我不想使用 float:right
,因为它会影响这些跨度旁边的其他元素。
将主题放在父 div
中并为 span
设置 display: inline-block
:
.parent{
direction: rtl;
}
.parent span{
display: inline-block;
direction: ltr;
}
<div class="parent">
<span>4 Series Gran Coupe</span>
<span class="left">(1)</span>
</div>
文字对齐不是文字方向
我看得很清楚,您混淆了文本对齐方式和文本方向。尽管它们听起来可能相同,但事实并非如此。文本对齐方式是您要放置或显示文本的位置 (left/center/right)。文本方向与字符(书写系统)的顺序有关。您可以让 RTL 文本左对齐,反之亦然。查看下面的实例,了解文本方向与对齐方式之间的区别。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class="rtl-lang">بين (قوسين)</p>
<p class="ltr-lang">between (brackets)</p>
<button onclick="$('.rtl-lang').css('direction', 'rtl')">Arabic rtl</button>
<button onclick="$('.rtl-lang').css('direction', 'ltr')">Arabic ltr</button>
<button onclick="$('.rtl-lang').css('text-align', 'right')">Arabic align right</button>
<button onclick="$('.rtl-lang').css('text-align', 'left')">Arabic alight left</button>
<br />
<button onclick="$('.ltr-lang').css('direction', 'rtl')">English rtl</button>
<button onclick="$('.ltr-lang').css('direction', 'ltr')">English ltr</button>
<button onclick="$('.ltr-lang').css('text-align', 'right')">English align right</button>
<button onclick="$('.ltr-lang').css('text-align', 'left')">English align left</button>
通常不要对 LTR 语言(例如英语、法语、德语...)使用 RTL 方向。如果您的文本使用一种 RTL 语言(例如阿拉伯语、希伯来语、波斯语...),则仅使用 RTL 方向。
现在让我们回到你的问题。基本上,您需要在父 <div>
中使用 text-align: right
然后反转 <span>
s
的顺序
.parent {
text-align: right;
}
<div class="parent">
<span>(1)</span>
<span>4 Series Gran Coupe</span>
</div>
如果 body 是 RTL,则必须对 span 使用 LTR 并将它们右对齐:
body {
direction: rtl;
margin: 56px 30px 0px;
/*margins are only for the snippet proper display */
}
.ltr_div {
direction: ltr;
text-align: right;
}
<div class="ltr_div">
<span>(1)</span>
<span>4 Series Gran Coupe</span>
</div>
我有两个内联跨度,里面有一些英文字母。但是我需要方向是从右到左 (RTL),但是网页没有正确显示跨度。
第一个跨度:<span>4 Series Gran Coupe</span>
第二个跨度:<span>(1)</span>
他们应该是这样的:
(1) 4 Series Gran Coupe
我在网页上看到的是这样的:
我不想使用 float:right
,因为它会影响这些跨度旁边的其他元素。
将主题放在父 div
中并为 span
设置 display: inline-block
:
.parent{
direction: rtl;
}
.parent span{
display: inline-block;
direction: ltr;
}
<div class="parent">
<span>4 Series Gran Coupe</span>
<span class="left">(1)</span>
</div>
文字对齐不是文字方向
我看得很清楚,您混淆了文本对齐方式和文本方向。尽管它们听起来可能相同,但事实并非如此。文本对齐方式是您要放置或显示文本的位置 (left/center/right)。文本方向与字符(书写系统)的顺序有关。您可以让 RTL 文本左对齐,反之亦然。查看下面的实例,了解文本方向与对齐方式之间的区别。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class="rtl-lang">بين (قوسين)</p>
<p class="ltr-lang">between (brackets)</p>
<button onclick="$('.rtl-lang').css('direction', 'rtl')">Arabic rtl</button>
<button onclick="$('.rtl-lang').css('direction', 'ltr')">Arabic ltr</button>
<button onclick="$('.rtl-lang').css('text-align', 'right')">Arabic align right</button>
<button onclick="$('.rtl-lang').css('text-align', 'left')">Arabic alight left</button>
<br />
<button onclick="$('.ltr-lang').css('direction', 'rtl')">English rtl</button>
<button onclick="$('.ltr-lang').css('direction', 'ltr')">English ltr</button>
<button onclick="$('.ltr-lang').css('text-align', 'right')">English align right</button>
<button onclick="$('.ltr-lang').css('text-align', 'left')">English align left</button>
通常不要对 LTR 语言(例如英语、法语、德语...)使用 RTL 方向。如果您的文本使用一种 RTL 语言(例如阿拉伯语、希伯来语、波斯语...),则仅使用 RTL 方向。
现在让我们回到你的问题。基本上,您需要在父 <div>
中使用 text-align: right
然后反转 <span>
s
.parent {
text-align: right;
}
<div class="parent">
<span>(1)</span>
<span>4 Series Gran Coupe</span>
</div>
如果 body 是 RTL,则必须对 span 使用 LTR 并将它们右对齐:
body {
direction: rtl;
margin: 56px 30px 0px;
/*margins are only for the snippet proper display */
}
.ltr_div {
direction: ltr;
text-align: right;
}
<div class="ltr_div">
<span>(1)</span>
<span>4 Series Gran Coupe</span>
</div>