只给键盘用户看焦点环:用 :focus-visible 做可访问的焦点样式

举报
yd_291533083 发表于 2026/11/03 09:09:42 2026/11/03
【摘要】 用 :focus-visible 替代全局去掉焦点轮廓:键盘 Tab 时显示清晰焦点,鼠标点击时界面保持干净,并注意自定义组件的可聚焦性与对比度。

很多网站的焦点样式只有两种极端:要么用 outline: none 一刀切去掉,导致键盘用户找不到焦点;要么所有点击都冒出粗黑框,鼠标用户觉得突兀。:focus-visible 正好解决这个两难:它只在浏览器判断用户需要焦点提示时才匹配,通常是键盘 Tab 导航,而鼠标点击则不匹配。


最实用的写法是先给所有可交互元素一个统一的可见焦点样式,再只在 :focus-visible 时启用它:


:focus-visible { outline: 2px solid #0f62fe; outline-offset: 2px; }


同时不要再全局写 :focus { outline: none; },而是把鼠标点击时的默认轮廓弱化处理:


:focus:not(:focus-visible) { outline: none; }


这样键盘用户按 Tab 时能清楚看到焦点位置,鼠标用户点击时界面依然干净。


还有三点容易忽略:第一,自定义组件如果用 div 模拟按钮,一定要加 tabindex 并保证能获得焦点,否则 :focus-visible 再好也无从谈起;第二,焦点样式要有足够的对比度,深色背景上浅色轮廓比默认蓝色更易读;第三,不要只依赖颜色区分焦点,轮廓加偏移的组合在高对比模式下也更稳。


一句话总结:不要去掉焦点提示,而是用 :focus-visible 把它交给真正需要它的人。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。