必须用 aria-current="page" 标识当前页码,因 仅是视觉样式、无语义,屏幕阅读器和搜索引擎无法识别;该属性须加在 标签上且值为 "page",并配合 CSS 样式与可访问性处理。

当前页码不能靠 <strong></strong> 标识,必须用 aria-current="page",否则屏幕阅读器和搜索引擎都识别不了“这是当前页”
为什么 <strong></strong> 不能当当前页标记用
它只是视觉加粗样式,没有语义。辅助技术(比如读屏软件)完全忽略它,SEO 也不认为这是导航状态。用户点击后页面没变化、焦点没移动、AT 不播报“当前页”,等于白标。
-
<strong></strong>是纯表现标签,HTML 规范里不带任何导航状态含义 - 搜索引擎爬虫不会把
<strong></strong>当作“当前页”信号,分页收录可能出错 - WCAG 2.1 要求导航项明确标识当前状态,
<strong></strong>不达标
aria-current="page" 怎么写才有效
必须加在代表“当前页”的那个链接(<a></a>)上,且值严格为 "page"(不能是 "true" 或 "current")。同时建议保留 href 属性,即使指向当前 URL —— 这样能保证键盘焦点可进入、浏览器前进/后退逻辑正常。
- ✅ 正确:
<a href="/blog?page=3" aria-current="page">3</a> - ❌ 错误:
<span aria-current="page">3</span>(不可聚焦,无链接语义) - ❌ 错误:
<a href="#" aria-current="true">3</a>(值非法,AT 可能静默忽略) - ⚠️ 注意:如果用前端路由(如 React Router),需用对应框架的 active link 组件,别手动塞
aria-current到静态 HTML 里
配合 CSS 样式时容易漏掉的点
仅加 aria-current="page" 不会自动变样式,得自己写 CSS。但很多人只写了 a[aria-current="page"],忘了覆盖默认链接颜色或下划线,结果视觉上还是跟其他页码一样。
立即学习“前端免费学习笔记(深入)”;
- 必须显式重置:比如
a[aria-current="page"] { font-weight: bold; color: #000; text-decoration: none; } - 如果用了
button做页码(非推荐),要加aria-current="page"同时确保tabindex="0"和键盘可交互 - 不要用
display: none隐藏当前页码项 —— 即使有aria-current,隐藏后 AT 就读不到了
真正难的不是加属性,而是让这个属性在动态分页、服务端渲染、前端路由、无障碍测试多个环节里始终存在且准确。漏一个场景,当前页就“失声”了。



















