小编典典

为什么在方向:rtl的开头显示结尾的标点符号?

css

这更多是一种好奇心。在使用多语言Web应用程序时,我注意到在块元素末尾的某些字符(如标点符号(!?。;,))呈现为好像它们放在开头一样,而当书写方向为从右到左时(因为我不会说某些亚洲语言)。

换句话说,字符串

Hello, World!

呈现为

!Hello, World

当放在div块中时 direction: rtl

如果将文本分为两部分并使用不同的颜色,则将变得更加明显:结尾的连续文本块在两个单独的区域中呈现:

这种行为的意义是什么?我想这一定是浏览器自动处理的从右到左语言的所有特性,所以我不需要关心它,还是应该?


阅读 760

收藏
2020-05-16

共1个答案

小编典典

原因是感叹号“!”BiDi类为ON(“其他中性”),这意味着它有效地适应了周围文本的方向性。因此,在示例情况下,它被放置在文本之前。对于从右到左书写的语言,这是完全正确的:终止标点符号出现在
末尾 ,即左侧。

通常,对于使用从右到左书写的语言的文本,仅对它们使用CSS代码direction: rtl,最好dir=rtl对文本使用HTML属性。对于他们来说,这种行为是解决方案,而不是问题。

如果改为使用direction: rtldir=rtl仅用于特殊效果(例如使表格列从右到左布置),则需要考虑其含义。例如,在表格的情况下,您需要为ltr表格的每个单元格设置“方向”(除非您希望将它们主要显示为从右到左的文本)。

例如,如果在阿拉伯文本块中引用了英语句子,则需要将包含英语文本的元素的方向性设置为ltr,例如

<blockquote dir=ltr>Hello, World!</blockquote>

W3C文档中的用例6讨论了一个类似的用例(仅在英语内部用阿拉伯语表示),您需要了解bidi算法和内联标记(但是有一些奇怪之处,例如对cite标记文本使用标记), W3C建议)。

2020-05-16