为什么HTML5支持`dir`属性



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

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

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

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

如果HTML5中的一个属性没有被弃用,那是有原因的,这种情况也不例外。首先,值得指出的是,存在CSS direction属性,因此它确实存在。但实际上使用属性更好,原因如下:

(以下引文均来自w3)

dir属性用于设置要显示的文本的基本方向。它对于在从右到左的脚本中启用HTML至关重要。

只有在需要更改块中内容的基本方向时,才可以对块元素使用dir属性。不要使用CSS。

您应该始终使用专用的bidi标记来描述您的内容,其中标记是可用的。然后,可能也可能不需要CSS来描述该标记的含义。

更具体地说:

方向性是文档结构不可分割的一部分,因此应该使用标记。。。。CSS应用的样式不是永久性的。它可能被关闭、覆盖、不被识别,或者在不同的上下文中被更改/替换。尽管bidi标记仅用于文本的视觉呈现,但它在功能上并不是纯粹的装饰性。。。

本质上说,它更容易被识别,你将在浏览器中获得更持久的结果。

就我个人而言,如果你使用它纯粹是为了给内容设置样式(这就是CSS的设计目的),那么我不会使用该属性。主要是因为你可能会使用另一个限制网站兼容性的属性,而且大多数人使用它是为了造型,而不是语言支持之类的。我认为这是一个无障碍功能,因为不是每个人都需要它,但它对那些需要它的人来说是很好的。


值得指出的是,还有第三种选择,即使用成对的Unicode二进制格式代码字符。然而,最好避免这种情况,因为它可能会变得不切实际,w3也认识到了这一点:

当在自由流动的内容中使用控制字符时,的范围总是有重叠或未终止的可能性

使用标记管理继承和段落分隔符的效果也容易得多。

HTML4规范特别警告不要将这两种方法混合使用,因为不正确嵌套的可能性会增加。


我撒谎了,这不是一个官方的无障碍功能,但我认为它是一个。虽然以下是真的:

标记和CSS都不应该使用CCD_ 9。

HTML5增加了一个新功能:

HTML5为dir属性提供了一个新值:auto。自动值告诉浏览器查看元素中的第一个强类型字符。如果是从右到左键入的字符,如希伯来语或阿拉伯语字母,则元素将获得rtl的方向。如果是拉丁字符,则方向为ltr.

本质上意味着HTML5将自动选择最佳选项。因此,它会选择适合用户阅读语言的相应值。请记住,大多数浏览器都提供翻译服务。根据我的定义,这是一个可访问性功能。

我在这里找到了完整的答案

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

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

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

标记保持与持久化中的文档内容集成时尚如果您使用专用bidi标记。因此,您应该使用专用的bidi标记只要它可用。不要简单地将CSS样式附加到一般元素以达到效果。

这就是为什么dir属性和css都存在于HTML5中的原因。

最新更新