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

时间:2015-11-26 21:06:19

标签: html css html5 css3

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

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

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

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

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

(以下引文均来自w3

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

  

仅当您需要更改该块中内容的基本方向时,才在块元素上使用dir属性。不要使用CSS。

     

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

更具体地说:

  

...方向性是文档结构的一个组成部分[所以]应该使用标记....   CSS应用的样式不是永久性的。它可能会被关闭,被覆盖,无法识别,或在不同的上下文中被更改/替换。虽然双向标记仅用于文本的视觉渲染,但它在功能上并不是纯粹的装饰......

基本上说它得到了更好的认可,您将在浏览器中获得更持久的结果。

就个人而言,如果您纯粹将它用于样式化内容(这是CSS的设计目的),那么我就不会使用该属性。主要是因为您可能会使用另一个限制您网站兼容性的属性,并且大多数人将其用于样式目的而不是语言支持和诸如此类的东西。我认为这是一个可访问性功能,因为不是每个人都需要它,但是对那些人来说它是有益的。

值得指出的是,还有第三种方法可以使用配对的Unicode bidi格式化代码字符。但是最好避免这种情况,因为它可能变得不切实际,w3 recognise this

  

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

     

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

     

HTML 4规范明确警告不要混淆这两种方法,因为嵌套不当的可能性增加。

我说谎,它不是官方的辅助功能,但我认为它是一个。虽然以下是真的:

  

既不应使用标记也不应使用CSS unless they are needed

HTML5添加了new feature

  

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

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

答案 2 :(得分:0)

我找到了完整的答案here

  

因为方向性是文档结构的组成部分,   标记应该用于设置文档的方向性   大块的信息,或识别文本中的地方   单独使用Unicode双向算法是不够的   期望的方向性。

     

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

     

虽然只有视觉呈现文本才需要bidi标记   它在功能上不是纯粹的装饰。

     

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

这就是HTML5中存在dir属性和css的原因。