We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
在开发TV web 应用时,发现在交互方式上和传统web开发很不一样。PC上的页面上都是通过鼠标进行交互,而TV则不同,它是通过遥控器按键进行交互,它有点击、移动(上下左右)、返回、主页等操作。移动的实质则是切换焦点,所以我们需要去理解什么焦点。
focusable元素: 能够被聚焦的元素,比如 button 、 input
button
input
接下来我们需要了解一下 tabindex 属性,这个很重要,没有它实现不了焦点管理。
tabindex
根据 HTML5 规范,属性 tabindex 定义了元素是否可以聚焦。也就是说如果一个元素声明了 tabindex="0" ,那么这个元素就允许聚焦了。
tabindex="0"
<div tabindex="0"></div>
tabindex 的值有一些规则,我们接下来看一看。它的值必须是一个整数(Integer),包括正整数、负整数、0。
如果该属性值为负整数,浏览器必须允许该元素可被聚焦,但,不能允许它被连续聚焦导航触及。
连续聚焦导航: 通过键盘进行连续导航,比如 tab 键
tab
举个具体例子,在chrome下,给一个 div 设置 tabindex="-1"
div
tabindex="-1"
<div id="test" tabindex="-1" ></div>
如果使用 tab 键进行焦点切换,这个div是选不中的,如果使用 focus 事件,是可以选中的。
focus
document.getElementById("test").focus()
如果该属性值为 0,浏览器必须允许该元素可聚焦,允许该元素可被连续聚焦导航触及,遵循平台(platform)约定去判定该元素的相对顺序。
也就是说不论通过键盘(tab键),还是 focus 事件,都可以选中元素。
如果该属性值为正整数,浏览器必须允许该元素可聚焦,允许该元素可被连续聚焦导航触及,应该安排该元素在连续聚焦导航中的顺序
在0和正整数中出现了导航顺序这个概念,那这又是什么呢?
导航顺序,使用tab键进行焦点切换的顺序。根据HTML5文档来看,假设有一个元素设置了tabindex,且属性值为正整数,那元素排序具体有以下几个规则:
我根据规范在chrome中进行了测试,顺序在chrome中简单来说就是:
0
[1, 2, 3, 4, 5, 6, ..., 0]
HTML5规定,有一些元素默认是聚焦元素
另外,每一个由area元素生成的形状都应该为可聚焦元素。除非平台约定有不同的描述。
我在chrome下测试了几个元素,发现实现和规范还是有一些出入。比如:具有href属性的link元素,不能被聚焦。
:focus
通过合理的利用默认焦点元素和 tabindex ,就可以实现对web页面的焦点控制。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
在开发TV web 应用时,发现在交互方式上和传统web开发很不一样。PC上的页面上都是通过鼠标进行交互,而TV则不同,它是通过遥控器按键进行交互,它有点击、移动(上下左右)、返回、主页等操作。
移动的实质则是切换焦点,所以我们需要去理解什么焦点。
接下来我们需要了解一下
tabindex
属性,这个很重要,没有它实现不了焦点管理。Tab Index
根据 HTML5 规范,属性
tabindex
定义了元素是否可以聚焦。也就是说如果一个元素声明了
tabindex="0"
,那么这个元素就允许聚焦了。tabindex
的值有一些规则,我们接下来看一看。它的值必须是一个整数(Integer),包括正整数、负整数、0。
负整数
如果该属性值为负整数,浏览器必须允许该元素可被聚焦,但,不能允许它被连续聚焦导航触及。
举个具体例子,在chrome下,给一个
div
设置tabindex="-1"
如果使用
tab
键进行焦点切换,这个div是选不中的,如果使用focus
事件,是可以选中的。0
如果该属性值为 0,浏览器必须允许该元素可聚焦,允许该元素可被连续聚焦导航触及,遵循平台(platform)约定去判定该元素的相对顺序。
也就是说不论通过键盘(tab键),还是
focus
事件,都可以选中元素。正整数
如果该属性值为正整数,浏览器必须允许该元素可聚焦,允许该元素可被连续聚焦导航触及,应该安排该元素在连续聚焦导航中的顺序
在0和正整数中出现了导航顺序这个概念,那这又是什么呢?
导航顺序
导航顺序,使用tab键进行焦点切换的顺序。
根据HTML5文档来看,假设有一个元素设置了tabindex,且属性值为正整数,那元素排序具体有以下几个规则:
我根据规范在chrome中进行了测试,顺序在chrome中简单来说就是:
0
特殊,始终在最后面。(e.g.[1, 2, 3, 4, 5, 6, ..., 0]
)默认的聚焦元素
HTML5规定,有一些元素默认是聚焦元素
另外,每一个由area元素生成的形状都应该为可聚焦元素。除非平台约定有不同的描述。
我在chrome下测试了几个元素,发现实现和规范还是有一些出入。比如:具有href属性的link元素,不能被聚焦。
焦点使用场景
其它
:focus
选择器。focus
事件无效,因为不是用户真实的行为,会被浏览器拦截通过合理的利用默认焦点元素和
tabindex
,就可以实现对web页面的焦点控制。参考资料
The text was updated successfully, but these errors were encountered: