我已经阅读了W3C's page,但对我来说仍然含糊不清。 role
属性的目的是澄清代码吗?或者它会被一些浏览器或蜘蛛解释?
它可以用作使用一些JavaScript库的DOM选择器(我这么认为,因为id
属性必须是唯一的,这可以用来识别页面上的多个资源)?
答案 0 :(得分:50)
简短版本:
角色属性可以为未来的浏览器提供一种以与设备无关的方式智能地处理某些XML元素的方法。例如,标记有“navigation”角色属性的无序列表可以在桌面和手持环境中的浏览器上智能解释,从而可以在两种环境中清晰显示。
长版:
本规范中定义的XHTML角色属性允许作者使用机器可提取的关于元素目的的语义信息来注释XML语言。用例包括可访问性,设备适配,服务器端处理和复杂数据描述。
该属性描述当前元素在文档上下文中扮演的角色。例如,这可以通过应用程序和辅助技术用于确定元素的目的。这可以允许用户做出关于可以对元素采取哪些动作并且以设备无关方式激活所选动作的明智决定。它还可以用作以域特定方式(例如,法律术语分类法)注释文档部分的机制。
示例:
<ul role="navigation sitemap">
<li href="downloads">Downloads</li>
<li href="docs">Documentation</li>
<li href="news">News</li>
</ul>
鉴于XHTML2工作组将在今年年底停止存在,因此该规范不可能在任何类似于其当前形式的版本中达到发布状态。 http://www.w3.org/News/2009#entry-6601
答案 1 :(得分:32)
您所引用的文档是现已停用的XHTML 2工作组的工作的一部分。它实际上是过时的。
HTML5 / XHTML5也有role
属性。它的定义相似但有些限制 - 其目的是指示可访问的富Internet应用程序(ARIA)角色,以便屏幕阅读器等辅助技术可以更好地告知用户UI组件(小部件)的用途,并帮助他们导航网页更容易。
ARIA的有效角色列表位于http://www.w3.org/TR/wai-aria/#roles
答案 2 :(得分:0)
角色可用于辅助功能。我的理解是,在语义清楚的地方应该避免使用角色属性。不鼓励使用<nav role="navigation">...</nav>
,因为nav
语义元素已经暗示导航。
但有些情况下它很有用。例如,作为链接的图像可以role="link" tabindex="0"
来帮助屏幕阅读器和其他辅助技术理解它充当链接(确保在输入密钥和点击事件时听取烦恼的keydown事件)
或者在图像上,您可以role="button"
指示图像充当按钮。
role属性允许Web应用程序向Web应用程序添加对浏览器有意义的语义,但如果没有指定它,则可能无法在标记中传达。
通常情况下,有一种语义上正确的方法可以在不使用属性的情况下执行此操作,但是当您需要它时它会存在。