反模式 · 可访问性 · 高
删掉焦点环
删掉焦点环指 outline: none 之后没有补任何替代指示,键盘用户从此失去位置。
症状
样式表里有 outline: none 或 outline: 0,却没有配套的 :focus-visible 规则。
为什么会这样
浏览器默认的焦点环与自定义控件形状冲突,模型于是把它去掉。而大多数生成 CSS 从来不补替代方案。
规则
替换而不是删除:2px 强调色环、2px 偏移,只作用于 :focus-visible。
- 删掉所有没有配套 :focus-visible 规则的裸 outline: none。
- 补一条 2px 强调色环 + 2px outline-offset。
- 限定在 :focus-visible,让鼠标点击保持干净。
删掉焦点环是什么?
outline: none 是生成代码里最常见的可访问性回退,而且它的动机往往是对的——默认焦点环在圆角控件上确实难看。解法不是删掉它,是替换它:2px 强调色、带偏移的环,只在 :focus-visible 时出现。用 Tab 走一遍页面;如果你看不出自己在哪,别人也看不出。
修复 Prompt
贴在你现有 Prompt 之后,把这类毛病从结果里剥掉。