:focus仅对可聚焦元素生效,需确保元素原生可聚焦或设tabindex="0";:active仅为瞬态按压反馈,无法表示持久“当前项”状态;推荐用aria-current="page"+JS管理+CSS控制实现语义化高亮。

focus 伪类只对可聚焦元素生效,按钮默认可聚焦但需注意 tabindex
原生 常见错误是给非表单元素写 CSS 里没有“当前项”的内置概念,所有持久高亮都得靠属性或 class 驱动。focus 和 active 是交互反馈,不是状态标识 —— 这个边界一旦混淆,后期维护和无障碍支持就会出问题。 元素默认支持 :focus,点击或按 Tab 键获得焦点时样式立即生效。但若按钮被包裹在 模拟按钮,就无法触发 :focus,除非手动加 tabindex="0"。:focus 却没设 tabindex,结果样式完全不生效。
、 覆盖所有场景,优先考虑 tabindex
tabindex="-1" 可隐藏鼠标点击后的焦点环(谨慎使用,确保可访问性):focus 并确保 ontouchstart 设置正确.nav-btn {
color: #666;
}
.nav-btn[aria-current="page"],
.nav-btn[aria-current="page"]:focus {
color: #007bff;
font-weight: bold;
}










