使用css `focus-visible` 改善用户体验

focus-visible 是一个非常有用的 CSS 伪类,它解决了 Web 可访问性中的一个重要问题
:focus-visible 用于在特定情况下为元素添加焦点样式,而不是像 :focus 那样总是显示焦点环。

css 复制代码
/* 传统 :focus - 总是显示 */
button:focus {
  outline: 2px solid blue;
}

/* 现代 :focus-visible - 智能显示 */
button:focus-visible {
  outline: 2px solid blue;
}
css 复制代码
/* 最佳实践:同时使用 :focus 和 :focus-visible */
.button {
  /* 基础样式 */
}

/* 为不支持 :focus-visible 的浏览器提供基础焦点样式 */
.button:focus {
  outline: 2px solid blue;
}

/* 为现代浏览器提供智能焦点样式 */
.button:focus:not(:focus-visible) {
  outline: none; /* 移除不必要的焦点样式 */
}

.button:focus-visible {
  outline: 2px solid blue;
  /* 可以添加更丰富的焦点样式 */
  box-shadow: 0 0 0 4px rgba(0, 123, 255, 0.25);
}

使用场景建议

适合使用 :focus-visible

按钮、链接等交互元素

导航菜单

表单控件

自定义组件

可能需要使用 :focus

需要始终显示焦点的特殊组件

模态对话框中的焦点管理

自定义键盘导航系统
See the Pen 使用 :focus-visible 改善用户体验 by liu874396180 ( @liu874396180) on CodePen.

相关推荐
竹林81830 分钟前
从零到一:我在Solana NFT铸造前端中搞定@solana/web3.js连接与交易
前端·javascript
猪八宅百炼成仙31 分钟前
不用点击也能预览图片:Element UI ImageViewer 命令式调用方案
前端
尘世中一位迷途小书童36 分钟前
前端工程化基石:package.json 40+ 字段逐一拆解
前端·javascript·架构
OpenTiny社区43 分钟前
WebMCP + WebSkills:企业级智能化页面操控方案,兼顾隐私安全与高效落地!
前端·ai编程·mcp
酉鬼女又兒1 小时前
零基础快速入门前端JavaScript四大核心内置对象:Math、Date、String、Array全解析(可用于备赛蓝桥杯Web应用开发)
前端·javascript·css·蓝桥杯·前端框架·js
__sgf__1 小时前
ES11(ES2020)新特性
前端·javascript
__sgf__1 小时前
ES8(ES2017)新特性
前端·javascript
__sgf__1 小时前
ES9(ES2018)新特性
前端·javascript
送鱼的老默1 小时前
学习笔记--vue3 watchEffect监听的各种姿势用法和总结
前端·vue.js
你挚爱的强哥1 小时前
解决:动态文本和背景色一致导致文字看不清楚,用js获取背景图片主色调,并获取对比度最大的hex色值给文字
前端·javascript·github