使用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.

相关推荐
花间相见3 分钟前
【终端效率工具01】—— Yazi:Rust 编写的现代化终端文件管理器,告别繁琐操作
前端·ide·git·rust·极限编程
|晴 天|13 分钟前
我如何用Vue 3打造一个现代化个人博客系统(性能提升52%)
前端·javascript·vue.js
风止何安啊21 分钟前
网页都知道要双向握手才加载!从 URL 到页面渲染,单向喜欢连 DNS 都解析不通
前端·javascript·面试
太极OS27 分钟前
给 AI Skill 做 CI/CD:GitHub + ClawHub + Xiaping 同步发布实战
前端
你_好27 分钟前
Chrome 内置了 AI 工具协议?WebMCP 抢先体验 + 开源 DevTools 全解析
前端·mcp
GISer_Jing27 分钟前
LangChain.js + LangGraph.js 前端AI开发实战指南
前端·javascript·langchain
正在发育ing__31 分钟前
从源码看vue的key和状态错乱的patch
前端
黄林晴1 小时前
第一次听到 Tauri 这个词,去学习一下
前端
可可爱爱的你吖1 小时前
蜂鸟云地图简单实现
前端
布局呆星1 小时前
Vue3 :生命周期、DOM 操作与自定义组合式函数
前端·javascript·vue.js