什么是HTML tabindex属性?

什么是在HTML中使用的tabindex属性?

tabindex是一个全局属性,负责两件事情:

  1. 它设置了“可调焦”元素的顺序
  2. 使元素“可以聚焦”

在我看来,第二件事情比第一件更重要。 有很less的元素是默认可聚焦的(例如<a>和表单控件)。 开发人员经常在不可聚焦元素(<div>,<span>等)上添加一些JavaScript事件处理程序(如“onclick”)。 而且,让你的界面不仅仅响应鼠标事件而且响应键盘事件(例如“onkeypress”)的方式也是使这些元素变得可以聚焦的。 而在最后一种情况下,如果你不想设置顺序,只是让你的元素集中使用所有这些元素的tabindex="0"

 <div tabindex="0"></div> 

另外,如果你不希望它通过tab键可以聚焦,那么使用tabindex="-1" 。 例如下面的链接将不会集中使用标签键来遍历。

 <a href="#" tabindex="-1">Tab key cannot reach here!</a> 

当用户按下选项卡button时,用户将按照以下示例中所示的顺序通过表格1,2和3。

例如:

 Name: <input name="name" tabindex="1" /> Age: <input name="age" tabindex="3" /> Email: <input name="email" tabindex="2" /> 

tabindex用于定义用户在使用Tab键浏览页面时遵循的顺序。 默认情况下,自然选项卡顺序将与标记中的源顺序匹配。

tabindex内容属性允许作者控制元素是否应该是可以聚焦的,是否应该使用顺序聚焦导航到达,以及为了顺序聚焦导航的目的,元素的相对顺序是什么。 名称“标签索引”来自通常使用的“标签”键来浏览可聚焦的元素。 术语“标签”是指通过使用顺序聚焦导航可达到的可聚焦元素向前移动。
W3Cbuild议:HTML5
7.4.1节连续焦点导航和tabindex属性

tabindex从0开始或任何正整数向上递增。 通常看到值0被避免,因为在旧版本的Mozilla和IE中,tabindex将从1开始,移动到2,并且仅在2之后才会变为0,然后是3. tabindex的最大整数值是32767 。 如果元素具有相同的tabindex则tabindex将与标记中的源顺序匹配。 一个负值将从标签索引中删除元素,所以它永远不会被聚焦。

如果一个元素被分配了一个-1tabindex ,它将删除该元素,它永远不会被聚焦,但是可以使用element.focus()以编程方式将焦点赋予该元素。

如果您指定没有值或空值的tabindex属性,它将被忽略。

如果在具有tabindex的元素上设置了disabled属性,则该元素将被忽略。


如果tabindex在页面中的任何位置被设置,而不pipe它与代码的其余部分(它可能在页脚,内容区域,在哪里)相关,如果存在定义的tabindex那么Tab键顺序将从该元素明确地指定了大于0的最低tabindex值。然后,它将循环通过定义的元素,并且仅在明确的tabindex元素已经被标记通过之后,它将返回到文档的开始并且遵循自然标签顺序。


在HTML4规范中,只有以下元素支持tabindex属性: anchor , area , button , input , object , select和textarea 。 但是,考虑到可访问性的HTML5规范允许为所有元素分配tabindex

例如

 <ul tabindex="-1"> <li tabindex="1"></li> <li tabindex="2"></li> <li tabindex="3"></li> </ul> 

是相同的

 <ul tabindex="-1"> <li tabindex="1"></li> <li tabindex="1"></li> <li tabindex="1"></li> </ul> 

因为不pipe事实上他们都被分配了tabindex="1" ,他们仍然按照相同的顺序,第一个是第一个,最后一个是最后一个。 这也是一样的..

 <div> <a></a> <a></a> <a></a> </div> 

因为如果它是默认行为,则不需要显式定义tabIndex。 默认情况下div不会被关注, anchor标签将会。

在页面内控制Tab键(按Tab键移动焦点)的顺序。

参考: http : //www.w3.org/TR/html401/interact/forms.html#h-17.11.1

您设置的值决定了您的键盘焦点将在网站上的元素之间移动的顺序。

在下面的例子中,当你第一次按Tab时,你的光标将移动到#foo,然后#awesome,然后#bar

 <input id="foo" tabindex="1" /> <input id="bar" tabindex="3" /> <input id="awesome" tabindex="2" /> 

如果您没有在任何位置定义选项卡索引,则键盘焦点将按照您在HTML文档中定义的顺序跟随您的页面的HTML标记。

如果选项卡的选项卡比指定tabindexes的次数多,则焦点将移动,就好像没有tabindexes一样,即按照HTML标签出现的顺序

它可以用来改变默认的表单元素焦点导航序列。

所以如果你有:

 text input A text input B submit button C 

通过使用Tab键你可以通过A-> B-> C导航。 Tabindex允许你改变这个stream程。

通常情况下,当用户在表单中从一个字段到另一个字段(在允许标签的浏览器中,而不是所有的浏览器都是这样做)时,顺序是这些字段在HTML代码中出现的顺序。

但是,有时您希望Tab键顺序稍有不同。 在这种情况下,您可以使用TABINDEX编号字段。 然后选项卡按从最低TABINDEX到最高的顺序stream动。

更多信息可以在这里findw3

另一个很好的例子可以在这里find

简单地说, tabindex用于关注元素。 语法: tabindex="numeric_value"这个numeric_value是元素的权重。 较低的值将首先被访问。

通过控件选项卡通常顺序发生在HTML代码上。

使用tabindex,标签将从tabindex最低的控件stream向tabindex最高的tabindex控件