2018-10-10 18:03:03 -04:00
|
|
|
|
---
|
|
|
|
|
id: 587d7790367417b2b2512ab0
|
2020-12-16 00:37:30 -07:00
|
|
|
|
title: 使用 tabindex 将键盘焦点添加到元素中
|
2018-10-10 18:03:03 -04:00
|
|
|
|
challengeType: 0
|
2020-02-11 17:06:41 +08:00
|
|
|
|
videoUrl: 'https://scrimba.com/c/cmzMDHW'
|
|
|
|
|
forumTopicId: 301027
|
2018-10-10 18:03:03 -04:00
|
|
|
|
---
|
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
# --description--
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2021-01-08 11:20:48 -08:00
|
|
|
|
HTML 的 `tabindex` 属性是与标签焦点相关的属性,给标签加上 tabindex 表示该标签可以获得焦点。`tabindex` 的值可以是零、负整数或正整数,这些数值分别定义了三种行为。
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2021-01-08 11:20:48 -08:00
|
|
|
|
当用户在页面中使用 tab 键时,有些标签(如:链接、表单控件)可以自动获得焦点,它们获得焦点的顺序与它们出现在文档流中的顺序一致。我们可以通过将其他标签(如 `div`、`span`、`p` 等)的 `tabindex` 属性值设为 0 来让它们实现类似的效果。比如:
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
`<div tabindex="0">I need keyboard focus!</div>`
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
**注意:**
|
2021-01-08 11:20:48 -08:00
|
|
|
|
`tabindex` 属性值为负整数(通常为 -1)的标签也是可以获得焦点的,只是不可以通过键盘操作(如 tab 键)来获得焦点。这种方法通常用于以编程的方式使内容获得焦点(如:将焦点设置到用 `div` 实现的弹出框上)的场景。只是这部分内容已经超出了当前挑战的范围。
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
# --instructions--
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2021-01-08 11:20:48 -08:00
|
|
|
|
Camper Cat 新建了一个用来收集他的用户信息的调查。他知道输入框可以自动获得键盘焦点,但他希望用户使用键盘切换标签时,焦点可以停留在指示文字(Instructions)上。请给 `p` 标签添加 `tabindex` 属性,并将它的属性值设为 0。注意:使用 `tabindex` 属性还可以让 CSS 伪类 `:focus` 在 `p` 标签上生效。
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
# --hints--
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2021-01-08 11:20:48 -08:00
|
|
|
|
表单中,作为指示文字(Instructions)的 `p` 标签应具有 `tabindex` 属性。
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
```js
|
|
|
|
|
assert($('p').attr('tabindex'));
|
|
|
|
|
```
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2021-01-08 11:20:48 -08:00
|
|
|
|
`p` 标签的 `tabindex` 属性值应设置为 0。
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
```js
|
|
|
|
|
assert($('p').attr('tabindex') == '0');
|
2018-10-10 18:03:03 -04:00
|
|
|
|
```
|
2020-02-11 17:06:41 +08:00
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
# --solutions--
|
|
|
|
|
|