Design Vocabulary设计词汇 · 样本集 01

VOCABULARY / 词条

焦点指示

Focus Indicator

加入比较 +

当界面元素获得键盘焦点时,用可见的视觉标记(如轮廓环或高亮)指出当前焦点所在,使键盘用户始终知道操作会落在哪里。

示意图 · 编辑插画,尚无可操作示例
虚构的 FIELDNOTES 表单工具栏上,一排按钮中只有一个被粗而对比鲜明的焦点环包围,其余按钮保持平淡的默认样式。
虚构的 FIELDNOTES 表单工具栏上,一排按钮中只有一个被粗而对比鲜明的焦点环包围,其余按钮保持平淡的默认样式。

识别特征

  • 获得键盘焦点的元素与相邻元素有明显的视觉差异
  • 指示在焦点停留期间持续可见,不会自动消失
  • 指示区域不被固定头部、浮层或其他作者内容整体遮挡

概念边界

焦点指示只回答“焦点现在在哪”,不等同于悬停、选中或激活状态;它是元素的一种状态样式,而不是一个独立组件,也不负责决定焦点应移到哪里。

什么时候考虑它

  • 界面可以用键盘或其他非指针方式操作
  • 自定义了按钮、链接或表单控件的外观并覆盖了浏览器默认样式
  • 页面存在固定头部、底栏或非模态浮层,焦点可能被遮挡

什么时候慎用

  • 不要为了美观直接移除默认轮廓而不提供等效替代
  • 不要用只在悬停时出现或很快淡出的效果代替持续的焦点指示
  • 不要把焦点指示与“已选中”样式做成一样,让用户无法区分位置和选择

取舍

显眼的焦点环可能与品牌视觉冲突,但用 :focus-visible 只在键盘操作时显示,可以在鼠标用户看不到多余轮廓的同时保住键盘可达性。

条件规则 · 编辑建议

当元素获得键盘焦点必须显示持续可见的焦点指示,并确保它不被固定头部、底栏或浮层完全遮挡。
当想去掉浏览器默认轮廓必须不要只写 outline: none;必须同时提供对比度足够的等效指示,优先用 :focus-visible。
当设计自定义焦点样式建议参考 2.4.13 的 2 CSS 像素周边与 3:1 对比变化作为目标,即使只以 AA 为合规底线。

相关词条

模态对话框 ↗可以配合 · 对话框打开并把焦点移入其中

焦点被程序移动后,用户只能靠可见指示知道自己已进入对话框。

包容性设计 ↗提供解释 · 服务键盘、开关设备或低视力用户

可见焦点是这些用户完成操作的前提,而非附加装饰。

玻璃拟态 ↗条件冲突 · 半透明模糊背景使轮廓与背景对比不足

焦点环需要在实际背景上保持足够对比,模糊透明表面可能削弱它。

来源与支持范围

W3C WAI · Understanding SC 2.4.7 Focus Visible (Level AA) ↗

WCAG 2.2 的 2.4.7(AA 级)要求任何可用键盘操作的界面都有一种模式使键盘焦点指示可见;沿用平台默认焦点指示是一种充分技术。

检索日期:2026-09-15
W3C WAI · Understanding SC 2.4.11 Focus Not Obscured (Minimum) (Level AA) ↗

WCAG 2.2 的 2.4.11(AA 级)要求组件获得键盘焦点时不被作者创建的内容(如固定头部、底栏、非模态对话框)完全遮挡。

检索日期:2026-09-15
W3C WAI · Understanding SC 2.4.13 Focus Appearance (Level AAA) ↗

WCAG 2.2 的 2.4.13(AAA 级)要求焦点指示区域至少相当于组件 2 CSS 像素粗的周边,且聚焦前后同一像素的对比度至少 3:1。

检索日期:2026-09-15
MDN · :focus-visible ↗

:focus-visible 在元素获得焦点且浏览器依据输入方式判断需要显示焦点时匹配;用它提供自定义指示,而不是用 outline: none 移除焦点样式。

检索日期:2026-09-15 · 快照待确认

定义参考以上来源;数字界面示例、选择建议、条件关系及配方由本样例编辑,尚未经用户研究验证。

类型扩展与实现说明

本词条尚无可操作示例;插画为编辑示意。应用到产品时仍须用键盘实际遍历页面,验证每类可聚焦元素的指示可见、对比足够且不被固定内容遮挡。

{
  "states": [
    "unfocused",
    "focus-visible",
    "focus-hidden"
  ],
  "a11y": [
    "键盘操作时焦点指示始终可见且不被遮挡",
    "自定义指示与背景及未聚焦状态的对比度足够",
    "焦点指示与选中、悬停状态可区分"
  ],
  "motion": "指示应即时出现;可选的淡入动画在减弱动态偏好下省略"
}
完整 Agent 条目 JSON
{
  "id": "focus-indicator",
  "type": "micro",
  "name": {
    "zh": "焦点指示",
    "en": "Focus Indicator"
  },
  "aliases": [
    "Focus Ring",
    "焦点环",
    "Visible Focus"
  ],
  "granularity": "state",
  "intents": [
    "include-users",
    "show-focus"
  ],
  "tags": [
    "键盘",
    "焦点",
    "无障碍",
    "可见状态",
    "focus"
  ],
  "definition": "当界面元素获得键盘焦点时,用可见的视觉标记(如轮廓环或高亮)指出当前焦点所在,使键盘用户始终知道操作会落在哪里。",
  "boundary": "焦点指示只回答“焦点现在在哪”,不等同于悬停、选中或激活状态;它是元素的一种状态样式,而不是一个独立组件,也不负责决定焦点应移到哪里。",
  "signature": [
    "获得键盘焦点的元素与相邻元素有明显的视觉差异",
    "指示在焦点停留期间持续可见,不会自动消失",
    "指示区域不被固定头部、浮层或其他作者内容整体遮挡"
  ],
  "when": [
    "界面可以用键盘或其他非指针方式操作",
    "自定义了按钮、链接或表单控件的外观并覆盖了浏览器默认样式",
    "页面存在固定头部、底栏或非模态浮层,焦点可能被遮挡"
  ],
  "when_not": [
    "不要为了美观直接移除默认轮廓而不提供等效替代",
    "不要用只在悬停时出现或很快淡出的效果代替持续的焦点指示",
    "不要把焦点指示与“已选中”样式做成一样,让用户无法区分位置和选择"
  ],
  "tradeoff": "显眼的焦点环可能与品牌视觉冲突,但用 :focus-visible 只在键盘操作时显示,可以在鼠标用户看不到多余轮廓的同时保住键盘可达性。",
  "comparison": {
    "focus": "告诉键盘用户当前操作会落在哪个元素上",
    "mechanism": "焦点状态下的持续可见轮廓或高亮,并保证不被遮挡",
    "cost": "需要为每类可聚焦元素维护对比度足够的焦点样式"
  },
  "sources": [
    {
      "id": "wcag22-focus-visible",
      "title": "W3C WAI · Understanding SC 2.4.7 Focus Visible (Level AA)",
      "url": "https://www.w3.org/WAI/WCAG22/Understanding/focus-visible.html",
      "claim": "WCAG 2.2 的 2.4.7(AA 级)要求任何可用键盘操作的界面都有一种模式使键盘焦点指示可见;沿用平台默认焦点指示是一种充分技术。",
      "checkedAt": "2026-09-15",
      "archive": {
        "lookupUrl": "https://web.archive.org/web/20260915*/https://www.w3.org/WAI/WCAG22/Understanding/focus-visible.html",
        "status": "available",
        "checkedAt": "2026-09-15T18:15:08.051Z",
        "jobId": "spn2-9fcf85e43df14f575a270e45053db1df538e579c",
        "url": "https://web.archive.org/web/20260915181618/https://www.w3.org/WAI/WCAG22/Understanding/focus-visible.html",
        "timestamp": "20260915181618"
      }
    },
    {
      "id": "wcag22-focus-not-obscured",
      "title": "W3C WAI · Understanding SC 2.4.11 Focus Not Obscured (Minimum) (Level AA)",
      "url": "https://www.w3.org/WAI/WCAG22/Understanding/focus-not-obscured-minimum.html",
      "claim": "WCAG 2.2 的 2.4.11(AA 级)要求组件获得键盘焦点时不被作者创建的内容(如固定头部、底栏、非模态对话框)完全遮挡。",
      "checkedAt": "2026-09-15",
      "archive": {
        "lookupUrl": "https://web.archive.org/web/20260915*/https://www.w3.org/WAI/WCAG22/Understanding/focus-not-obscured-minimum.html",
        "status": "available",
        "checkedAt": "2026-09-15T18:15:08.942Z",
        "jobId": "spn2-801ec8d206de4b85b09e56485c3a229ddb0e834b",
        "url": "https://web.archive.org/web/20260915181537/https://www.w3.org/WAI/WCAG22/Understanding/focus-not-obscured-minimum.html",
        "timestamp": "20260915181537"
      }
    },
    {
      "id": "wcag22-focus-appearance",
      "title": "W3C WAI · Understanding SC 2.4.13 Focus Appearance (Level AAA)",
      "url": "https://www.w3.org/WAI/WCAG22/Understanding/focus-appearance.html",
      "claim": "WCAG 2.2 的 2.4.13(AAA 级)要求焦点指示区域至少相当于组件 2 CSS 像素粗的周边,且聚焦前后同一像素的对比度至少 3:1。",
      "checkedAt": "2026-09-15",
      "archive": {
        "lookupUrl": "https://web.archive.org/web/20260915*/https://www.w3.org/WAI/WCAG22/Understanding/focus-appearance.html",
        "status": "available",
        "checkedAt": "2026-09-15T18:15:52.982Z",
        "jobId": "spn2-a9fd9a9b13e84404118824f029bc61f053195d6d",
        "url": "https://web.archive.org/web/20260915181656/https://www.w3.org/WAI/WCAG22/Understanding/focus-appearance.html",
        "timestamp": "20260915181656"
      }
    },
    {
      "id": "mdn-focus-visible",
      "title": "MDN · :focus-visible",
      "url": "https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-visible",
      "claim": ":focus-visible 在元素获得焦点且浏览器依据输入方式判断需要显示焦点时匹配;用它提供自定义指示,而不是用 outline: none 移除焦点样式。",
      "checkedAt": "2026-09-15",
      "archive": {
        "lookupUrl": "https://web.archive.org/web/20260915*/https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-visible",
        "status": "pending",
        "checkedAt": "2026-09-15T18:15:53.975Z",
        "error": "status-request-failed",
        "jobId": "spn2-056d7e4736cb9f64b02f029a127a4fa01f20be72"
      }
    }
  ],
  "relations": [
    {
      "target": "modal-dialog",
      "kind": "composes_with",
      "condition": "对话框打开并把焦点移入其中",
      "reason": "焦点被程序移动后,用户只能靠可见指示知道自己已进入对话框。",
      "basis": "editorial"
    },
    {
      "target": "inclusive-design",
      "kind": "informs",
      "condition": "服务键盘、开关设备或低视力用户",
      "reason": "可见焦点是这些用户完成操作的前提,而非附加装饰。",
      "basis": "editorial"
    },
    {
      "target": "glassmorphism",
      "kind": "conflicts_when",
      "condition": "半透明模糊背景使轮廓与背景对比不足",
      "reason": "焦点环需要在实际背景上保持足够对比,模糊透明表面可能削弱它。",
      "basis": "editorial"
    }
  ],
  "rules": [
    {
      "when": "元素获得键盘焦点",
      "instruction": "显示持续可见的焦点指示,并确保它不被固定头部、底栏或浮层完全遮挡。",
      "strength": "must",
      "basis": "editorial"
    },
    {
      "when": "想去掉浏览器默认轮廓",
      "instruction": "不要只写 outline: none;必须同时提供对比度足够的等效指示,优先用 :focus-visible。",
      "strength": "must",
      "basis": "editorial"
    },
    {
      "when": "设计自定义焦点样式",
      "instruction": "参考 2.4.13 的 2 CSS 像素周边与 3:1 对比变化作为目标,即使只以 AA 为合规底线。",
      "strength": "recommend",
      "basis": "editorial"
    }
  ],
  "behavior": {
    "states": [
      "unfocused",
      "focus-visible",
      "focus-hidden"
    ],
    "a11y": [
      "键盘操作时焦点指示始终可见且不被遮挡",
      "自定义指示与背景及未聚焦状态的对比度足够",
      "焦点指示与选中、悬停状态可区分"
    ],
    "motion": "指示应即时出现;可选的淡入动画在减弱动态偏好下省略"
  },
  "demo": null,
  "version": "0.1.0",
  "editorialStatus": "drafted",
  "requirements": [],
  "demoCapabilities": [],
  "implementationNote": "本词条尚无可操作示例;插画为编辑示意。应用到产品时仍须用键盘实际遍历页面,验证每类可聚焦元素的指示可见、对比足够且不被固定内容遮挡。",
  "image": {
    "src": "/images/focus-indicator.webp",
    "alt": "虚构的 FIELDNOTES 表单工具栏上,一排按钮中只有一个被粗而对比鲜明的焦点环包围,其余按钮保持平淡的默认样式。"
  },
  "searchTerms": [
    "keyboard",
    "focus",
    "accessibility",
    "visible state",
    "focus"
  ]
}