为什么HTML5支持`dir`属性?

问题描述 投票:1回答:3

我注意到如果我想改变元素的方向顺序,我应该使用dir属性(例如<div dir="ltr"></div>)。

我很惊讶HTML5确认了这种方法,并没有用CSS3取代它,因为据我所知,HTML5 / CSS3的方法是将元素放在HTML文件上并用CSS设置它们的样式。这就是为什么不推荐使用alignwidthheight等属性(优化的img标签除外,仅限于px)。此外,删除样式标签,如<font>证实了这种方法。

我想知道为什么dir属性仍然在HTML中而不在CSS中?有什么理由吗?

html css html5 css3
3个回答
4
投票

元素的方向是副作用。该属性描述了语言的编写方向。例如,英语是从左到右的语言,而希伯来语是从右到左的语言。因此它是一个语义属性。


2
投票

如果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将自动选择最佳选项。因此,它选择适合用户正在阅读的语言的相应值。请记住,大多数浏览器都提供翻译服务。根据我的定义,这使得可访问性功能成为可能。


0
投票

我找到了完整的答案here

由于方向性是文档结构的组成部分,因此应使用标记来设置文档或信息块的方向性,或者标识文本中仅使用Unicode双向算法不足以实现所需方向性的位置。

为了产生所需的从右到左或双向效果,有些人只是将CSS应用于相关文本周围的任何一般段落或内联元素。但是,CSS应用的样式不是永久性的。它可能会被关闭,被覆盖,无法识别,或在不同的上下文中被更改/替换。标记也可以进入CSS不可用的地方,例如。通过共享数据库或引用的片段。

尽管双向标记仅用于文本的视觉呈现,但它在功能上不是纯粹的装饰性的。

标记仍然以持久的方式与文档内容集成。如果您使用专用的bidi标记,它还会使内容更加清晰。因此,您应该在可用时使用专用的bidi标记。不要简单地将CSS样式附加到一般元素以实现效果。

这就是为什么dir属性和CSS都存在于HTML5中。

© www.soinside.com 2019 - 2024. All rights reserved.