我注意到如果我想改变元素的方向顺序,我应该使用dir属性(例如<div dir="ltr"></div>
)。
我很惊讶HTML5确认了这种方法,并没有用CSS3取代它,因为据我所知,HTML5 / CSS3的方法是将元素放在HTML文件上并用CSS设置它们的样式。这就是为什么不推荐使用align
,width
和height
等属性(优化的img标签除外,仅限于px)。此外,删除样式标签,如<font>
证实了这种方法。
我想知道为什么dir
属性仍然在HTML中而不在CSS中?有什么理由吗?
元素的方向是副作用。该属性描述了语言的编写方向。例如,英语是从左到右的语言,而希伯来语是从右到左的语言。因此它是一个语义属性。
如果HTML5中的属性没有被弃用,那么就有理由,这种情况也不例外。首先,值得指出的是有一个CSS direction
属性,所以它确实存在。但实际上使用属性更好,这就是原因:
(以下引用均来自w3)
dir
属性用于设置文本的基本方向以供显示。从右到左脚本启用HTML至关重要。
仅当需要更改该块中内容的基本方向时,才在块元素上使用dir属性。不要使用CSS。
您应该始终使用专用的bidi标记来描述您可以获得标记的内容。然后可能也可能不需要CSS来描述该标记的含义。
进一步来说:
...方向性是文档结构的一个组成部分[所以]应该使用标记.... CSS应用的样式不是永久性的。它可能会被关闭,被覆盖,无法识别,或在不同的上下文中被更改/替换。虽然双向标记仅用于文本的视觉呈现,但它在功能上并不是纯粹的装饰......
基本上说它更受认可,你将在浏览器中获得更持久的结果。
就个人而言,如果你纯粹用它来设计样式内容(这是CSS的设计目的),那么我就不会使用该属性了。主要是因为您可能会使用另一个限制您网站兼容性的属性,并且大多数人将其用于样式目的而不是语言支持等等。我认为这是一个可访问性功能,因为并不是每个人都需要它,但是对于那些做的人来说,它是有益的。
值得指出的是,还有第三种选择使用配对的Unicode bidi格式化代码字符。然而,最好避免这种情况,因为它可能变得不切实际,w3 recognise this:
当控制字符用于自由流动的内容时,总是存在重叠或未终止范围的可能性
使用标记管理继承和段落分隔符的效果也更容易。
HTML 4规范特别警告不要混合使用这两种方法,因为嵌套不当的可能性增加。
我撒谎,这不是官方的辅助功能,但我认为它是一个。以下是真实的:
unless they are needed
既不应使用标记也不应使用CSS。
HTML5添加了new feature:
HTML5为dir属性提供了一个新值:auto。 auto值告诉浏览器查看元素中第一个强类型字符。如果它是从右到左打字的字符,例如希伯来语或阿拉伯字母,则该元素将获得rtl的方向。如果是拉丁字符,那么方向将是ltr。
基本上意味着HTML5将自动选择最佳选项。因此,它选择适合用户正在阅读的语言的相应值。请记住,大多数浏览器都提供翻译服务。根据我的定义,这使得可访问性功能成为可能。
我找到了完整的答案here
由于方向性是文档结构的组成部分,因此应使用标记来设置文档或信息块的方向性,或者标识文本中仅使用Unicode双向算法不足以实现所需方向性的位置。
为了产生所需的从右到左或双向效果,有些人只是将CSS应用于相关文本周围的任何一般段落或内联元素。但是,CSS应用的样式不是永久性的。它可能会被关闭,被覆盖,无法识别,或在不同的上下文中被更改/替换。标记也可以进入CSS不可用的地方,例如。通过共享数据库或引用的片段。
尽管双向标记仅用于文本的视觉呈现,但它在功能上不是纯粹的装饰性的。
标记仍然以持久的方式与文档内容集成。如果您使用专用的bidi标记,它还会使内容更加清晰。因此,您应该在可用时使用专用的bidi标记。不要简单地将CSS样式附加到一般元素以实现效果。
这就是为什么dir
属性和CSS都存在于HTML5中。