【问题标题】:What's the tabindex="-1" in bootstrap for引导程序中的 tabindex="-1" 是什么
【发布时间】:2015-10-02 16:07:30
【问题描述】:

Bootstrap 3 中的tabindex 属性有什么用?

它的文档没有说明它们,尽管它们实际上在所有模态中都使用它们。

我只发现了这个关于它的使用,这并没有说太多

键盘和辅助技术用户的可访问工具提示

对于使用键盘导航的用户,尤其是辅助技术用户,您应该只将工具提示添加到可通过键盘聚焦的元素,例如链接、表单控件或任何具有 tabindex="0" 属性的任意元素。

我发现I can't press esc to hide a modal if the tabindex attribute is not -1

【问题讨论】:

    标签: twitter-bootstrap twitter-bootstrap-3 bootstrap-modal


    【解决方案1】:

    tabindex 属性明确定义页面内可聚焦元素(通常是链接和表单控件)的导航顺序。它也可以用来定义元素是否应该是可聚焦的。

    [两者]tabindex="0"tabindex="-1" 具有特殊含义,并在 HTML 中提供不同的功能。 0 的值表示该元素应按默认导航顺序放置。这允许原生不可聚焦的元素(例如<div><span><p>)接收键盘焦点。当然,通常应该为所有交互元素使用链接和表单控件,但这确实允许其他元素成为焦点并触发交互。

    tabindex="-1"从默认导航流中删除元素(即,用户无法通过 Tab 切换到该元素),但它允许它接收程序化焦点,这意味着可以通过链接或脚本将焦点设置为它。**这可能非常对于不应使用标签的元素非常有用,但可能需要为其设置焦点。。 p>

    一个很好的例子是模态对话框窗口 - 打开时,焦点应该设置在对话框上,这样屏幕阅读器就会开始阅读,键盘也会开始在对话框中导航。因为对话框(可能只是一个 <div> 元素)默认情况下是不可聚焦的,因此将其指定为 tabindex="-1" 允许在出现时通过脚本对其进行焦点设置。

    -1 的值在使用箭头键或其他快捷键的复杂小部件和菜单中也很有用,以确保小部件中只有一个元素可以使用 Tab 键导航,但仍然允许将焦点设置在小部件内的其他组件上。

    来源:http://webaim.org/techniques/keyboard/tabindex

    这就是为什么在模态<div> 上需要tabindex="-1",以便用户可以访问常用的鼠标和键盘快捷键。希望对您有所帮助。

    【讨论】:

    • 该属性是HTML的一部分,与Bootstrap没有任何关系。
    • 是的,这正是这里所说的,它是“HTML 中的独特功能”,与 Bootstrap 无关。
    • 为了能够使用 JavaScript 关注
      ,必须在此元素上定义 tabindex 属性(任何值,例如 tabindex=-1)。如果 div 上不存在 tabindex,则聚焦将不起作用。这就是 BS 将 tabindex=-1 添加到模态 div 的原因。请参阅developer.mozilla.org/en-US/docs/Web/Accessibility/…:如果 tabindex 不存在,JS 的焦点将遵循元素的平台约定(是的,用于表单控件、链接等)。这意味着如果 tabindex 不存在,则
      是不可聚焦的。
    • 值得添加 tabindex="-1" 的元素也可以通过点击获得焦点。
    【解决方案2】:

    tabindex 属性与 HTML 相关联,它不特定于 Bootstrap。

    此属性负责指示元素是否可以通过键盘导航到达。

    您需要注意三种不同的情况:

    1. tabindex = "0" 添加到元素时,这意味着它可以通过键盘导航访问,但顺序由文档源顺序定义。

    2. 将正值添加到 tabindex 属性(例如tabindex = "1", tabindex = "2")时,这些元素可以通过键盘导航访问,并且顺序由属性值定义.

    3. 添加负值到tabindex(通常为tabindex="-1")时,表示该元素无法通过键盘导航到达,但可以使用JS中的焦点功能聚焦.

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签