2011-02-11 60 views
34

是否可以使用CSS控制tabindex,如果是,哪些浏览器支持它以及哪些元素?CSS中的tabindex

编辑

我应该说,我的目标是赶超的keydown上一个div事件。我看到了这个页面http://www.quirksmode.org/js/events/keys.html#,它测试键盘事件,它表明keydown在文档,主体或某种表单元素或链接之外触发的唯一方法是在其上声明tabindex。但我读了W3C网站:

下列元素支持 的tabindex属性:A,区域,按钮 INPUT,对象,选择和TEXTAREA。

所以我有点困惑,为了遵守标准并使我的用例起作用该怎么办?

EDIT2

我的整个使用情况是很多的内容与人工滚动条的DIV。我可以用鼠标事件来滚动它,但到目前为止还没有键盘运气。

+1

在div上捕获键盘事件不是你的用例。这是您试图回答用例的实现细节。用不同的答案。 (我们不能给你任何建议,因为你没有告诉我们真正的用例是什么)。 – Quentin 2011-02-11 17:36:27

回答

25

查看W3C在CSS3-UI中引入的nav-index属性。

该属性与tabindex的行为完全相同,适用于任何元素。

“nav-index”属性是指定顺序导航顺序(也称为“标签顺序”)的输入法中性方法。 此属性是HTML4/XHTML1属性“的tabindex”

被替代可能是最符合标准的使用情况下的解决方案,nav-index仅由歌剧院,到目前为止解释(如2012年6月),是也被W3C标记为“风险特征”,因此可能会随时丢失。

替代跨浏览器的解决方案是:

  • 不符合标准:设置tabindex属性上DIV。这将适用于所有常见的浏览器。

  • 符合标准:与display: block替换由锚元件(ADIV未经href属性集,风格它并添加tabindex属性。

对于BoltClock's点,我同意跳位顺序是非常合乎逻辑(包括文本选择顺序和Tab键顺序密切相关的元件,其中在文档中的aranged序列)。另一方面,CSS今天有更广泛的用途。它不仅可以处理文档的内容(content属性),还可以处理何时以及是否要触发事件的行为:即使用pointer-events,displayz-index,指针事件的顺序将发生变化。如果这些是非常基本的CSS属性,为什么你不应该也能影响KeyBoardEvents呢?


更新2017年

正如@Wallop在评论中指出,该nav-index财产在2015年dropped from the spec由于 “缺乏实施的兴趣”。

+1

我听说`tabindex`现在被允许在HTML5中的所有元素上......出于某种原因。 – BoltClock 2012-12-12 01:57:54

+5

截至2014年4月,`nav-index`仍然没有浏览器支持。 :( – 2014-04-09 17:17:50