跳到正文
UIGrammer
EN 中文

反模式 · 可访问性 ·

删掉焦点环

删掉焦点环指 outline: none 之后没有补任何替代指示,键盘用户从此失去位置。

症状

样式表里有 outline: none 或 outline: 0,却没有配套的 :focus-visible 规则。

为什么会这样

浏览器默认的焦点环与自定义控件形状冲突,模型于是把它去掉。而大多数生成 CSS 从来不补替代方案。

规则

替换而不是删除:2px 强调色环、2px 偏移,只作用于 :focus-visible。

  1. 删掉所有没有配套 :focus-visible 规则的裸 outline: none。
  2. 补一条 2px 强调色环 + 2px outline-offset。
  3. 限定在 :focus-visible,让鼠标点击保持干净。

删掉焦点环是什么?

outline: none 是生成代码里最常见的可访问性回退,而且它的动机往往是对的——默认焦点环在圆角控件上确实难看。解法不是删掉它,是替换它:2px 强调色、带偏移的环,只在 :focus-visible 时出现。用 Tab 走一遍页面;如果你看不出自己在哪,别人也看不出。

修复 Prompt

贴在你现有 Prompt 之后,把这类毛病从结果里剥掉。