当前位置: 首页 > 面试题库 >

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

万俟沛
2023-03-14
问题内容

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

换句话说,字符串

Hello, World!

呈现为

!Hello, World

当放在div块中时 direction: rtl

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

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


问题答案:

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

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

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

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

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

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



 类似资料:
  • 我需要一个正则表达式来精确匹配在字符串开头或结尾设置的字符,并将它们替换为。注意:它不应该与该字符集的部分匹配,只有当它完整地出现时。 因此,如果我有,它应该返回。 如果我有,它应该只删除,而不是开头的,因为它不是整个,而是它的一部分。 我尝试的是: “AB”不应匹配,因为它们不是单独“AB”组,而是其他单词的一部分。

  • 本文向大家介绍PHP针对字符串开头和结尾的判断方法,包括了PHP针对字符串开头和结尾的判断方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP针对字符串开头和结尾的判断方法。分享给大家供大家参考,具体如下: 更多关于PHP相关内容感兴趣的读者可查看本站专题:《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP运算与运算符用法总结》、《PHP网络

  • 问题内容: 为什么在Java中(我不知道任何其他编程语言)标识符不能以数字开头,为什么也不允许以下声明? 问题答案: 通常,您将这种限制放入其中有两个原因: 用电子方式解析很痛苦。 对人类来说这是一个痛苦的解析。 考虑以下代码片段: 如果是合法标识符,那么末尾有哪个值?-3还是2?这是模棱两可的。 同时考虑: 最后有什么价值?这也是模棱两可的。 另外,以任何一种方式阅读都是很痛苦的。如果有人声明,

  • 问题 你需要通过指定的文本模式去检查字符串的开头或者结尾,比如文件名后缀,URL Scheme等等。 解决方案 检查字符串开头或结尾的一个简单方法是使用 str.startswith() 或者是 str.endswith() 方法。比如: >>> filename = 'spam.txt' >>> filename.endswith('.txt') True >>> filename.starts

  • 问题内容: 我有一个我需要在其开头和结尾添加字符,并且应该以另一个type变量结尾。我怎么容易做到这一点? 问题答案: 您需要一个SequenceInputStream和几个ByteArrayInputStream。您可以使用String.getBytes来为后者制作字节。SequenceInputStream很古老,因此使用起来有点笨拙: 如果你有很多的字符添加,并且不希望将它们转换为字节 集体

  • 我在Linux中使用的Java版本是: OpenJDK版本“16.0.2”2021-07-20 OpenJDK运行时环境(构建16.0.2+7) OpenJDK 64位服务器VM(构建16.0.2+7,混合模式) 这是我从Head-First Java书中编译的代码: 为什么那个特殊字符(%)会出现在字符串的末尾,我如何编写代码来去掉它?