tabindex 用法说明

news/2024/7/19 15:26:25 标签: js, html

1 前 言

tabindex 指示其元素是否可以聚焦,以及它是否/在何处参与顺序键盘导航。

本篇将介绍 tabindex 的一些用法。通常使用 tab 键移动焦点,使用空格键激活焦点。

2 规范 && 兼容

HTML 4Only supported on <a>、<area>、 <button>、 <object>、 <select>、 <textarea>
HTML 5All elements
  • 兼容目前所有 PC浏览器手机浏览器

3 定 义

  • tabindex="-1" :表示元素是可聚焦的,但是不能通过 tab 导航来访问到该元素,可以通过html" title=js>js获取。
  • tabindex="0" :表示元素是可聚焦的,可以通过 tab 导航来聚焦到该元素,它的相对顺序是当前处于的DOM结构来决定的。若一个元素没有设置 tabindex,默认值为 0。
  • tabindex 大于 0 :表示元素是可聚焦的,可以通过 tab 导航来访问到该元素;它的相对顺序按照 tabindex 的数值递增而滞后获焦(先获取值小的)。如果多个元素拥有相同的 tabindex,它们的相对顺序按照他们在当前DOM中的先后顺序决定。

注:tabindex 的最大值不应超过 32767

4 使 用

4.1 获取焦点 activeElement

  • 返回当前页面中获得焦点的元素,该属性是只读的。
  • 页面加载中,document.activeElementnull
  • 页面刚刚加载完成,document.activeElementbody 元素的引用。
  • 不支持 IE。

4.2 设置焦点

4.2.1 tab 键

使用 tab 键来根据 tabindex 的定义来切换焦点

4.2.2 focus()

html" title=js>js">document.getElementById("id").focus();
document.getElementById("id").focus({preventScroll:false});
  • preventScroll 默认为 false,表示当触发时,浏览器会将元素滚动到视图中。
  • preventScrolltrue,则不发生滚动。
  • 非表单元素,须设置 tanindex="-1"

4.2.3 autofocus

  • 该属性会使元素在页面加载时会自动获得焦点,除非用户覆盖它。
  • 如果设置多个,则会将第一个拥有该属性的元素设为初始焦点。
  • 该属性只能用于表单元素。
html"><select id="mySelect" autofocus>
  <option>Option 1</option>
  <option>Option 2</option>
</select>
html" title=js>js">// 返回一个 Boolean
// Check if the autofocus attribute on the <select>
var hasAutofocus = document.getElementById('mySelect').autofocus;

4.3 判断焦点 hasFocus()

如果当前页面的活动元素获得了焦点,Document.hasFocus() 返回 true,否则为 false。可以用来判断用户是否正在与该页面进行交互。

4.4 取消焦点

html" title=js>js">document.getElementById("id").blur();

blur() 会将焦点从元素中移走,并不是转移到其他特定元素上。

4.5 焦点事件

html" title=js>js">element.onfocus = function(){}
element.onblur = function(){}
element.onfocusin = function(){}
element.onfocusout = function(){}

element.addEventListener("focus", function(){})
element.addEventListener("blur", function(){})
element.addEventListener("focusin", function(){})
element.addEventListener("focusout", function(){})
  • focus :在元素获取焦点时触发,不支持冒泡
  • focusin :在元素获取焦点时触发,支持冒泡
  • blur :在元素失去焦点时触发,不支持冒泡
  • focusout :在元素失去焦点时触发,支持冒泡

5 后 记

感谢支持。

若不足之处,欢迎大家指出,共勉。

如果觉得不错,记得 点赞,谢谢大家 ʚ💖ɞ

欢迎关注。

  • GitHub
  • 掘 金
  • 简 书

5.1 原文地址

https://xrkffgg.github.io/Knotes/blog/14.html


http://www.niftyadmin.cn/n/1732036.html

相关文章

安卓平板usb变显示器_显示百闻录 | 便携显示器触屏功能的正确使用方式。

触屏&#xff0c;目前已经从“禁忌”变成了手机、平板等设备的使用习惯&#xff0c;从前对于显示屏来说&#xff0c;不可以随便触碰&#xff0c;人们担心会因为力度不当造成屏幕的损坏&#xff0c;而现在触屏则让人们可以从主动观看变成了主动介入&#xff0c;但是相信对于可触…

Pug 介绍和在 Vue 中使用

1 介绍 pug 是一种前端模板引擎&#xff0c;原名 jade 可用来生成 HTML&#xff0c;它的写法类似于 CSS 中文文档 这里先简单举几个 &#x1f330; #hello <div id"hello"></div>a.link-button Link <a class"link-button">Link</…

c++代码健壮性_干货!java代码性能优化,提高健壮性

干货&#xff01;java代码性能优化&#xff0c;提高健壮性骐骥一跃&#xff0c;不能十步&#xff1b;驽马十驾&#xff0c;功在不舍。提高代码的质量&#xff0c;优化性能&#xff0c;贵在坚持&#xff01;如果用功去清除代码的“坏味道”&#xff0c;并坚持做好积累&#xff0…

Issues 助手 —— 一个轻松帮你自动管理 issues 的 GitHub Action

经常玩 GitHub 的童鞋想必对 Issues 都不陌生。它是连接维护者和使用者的一个重要方式。 对于维护者&#xff1a; 可以收集、处理产品的 Bug 和 新特性。建立以产品为中心的社区。根据 issue 可定位产品薄弱环节和未来走向。 对于使用者&#xff1a; 可以通过 issue 咨询使…

如何升级浏览器_谷歌浏览器Chrome 83稳定版来了,可以设置完整显示地址栏URL地址...

谷歌浏览器Chrome从76版本开始&#xff0c;隐藏http://www.和https://www 。引来一片反对的声音。如今Chrome 83稳定版已经向普通用户推送。这个版本可以设置完整显示站点URL地址。下面来一起看看如何设置。安装或升级后&#xff0c;打开浏览器&#xff0c;地址栏输入如下地址并…

brave浏览器_微软、Brave、Opera、火狐等主流平台纷纷布局IPFS:分布式存储大势所趋...

点击标题下「蓝色微信名」可快速关注随着中心化网络平台各种问题频出&#xff0c;去中心化网络IPFS应用而生&#xff0c;目前&#xff0c;微软、Brave、Opera、火狐等主流平台纷纷布局IPFS&#xff0c;可见&#xff0c;分布式存储技术大势所趋&#xff01;同时&#xff0c;IPFS…

python窗口动态实时显示时间_江苏2.8寸串口屏厂家:全自动切管机触摸屏实时动态显示切割过程...

全自动切管机的动力系统一般使用普通异步电机&#xff0c;在剪板过程中不断启停&#xff0c;能耗大、效率低。针对这些情况&#xff0c;可以对全自动切管机进行自动化改造&#xff0c;提高工作效率和剪板精度&#xff0c;降低能耗。系统上电启动&#xff0c;操作人员通过金玺触…

java数据类型_Java系列教程day03——数据类型

day03——数据类型提纲&#xff1a;1、数据类型的分类 2、8种基本数据类型 3、数据类型的转换 ​上节课回顾1、第一个程序&#xff1a;重点A&#xff1a;程序的结构&#xff0c;B&#xff1a;java程序的执行过程&#xff1a;编写源代码&#xff0c;编译器进行编译&#xff1a;j…