aria-sort 应写在 或 元素上,仅对当前单元格所代表的列(或行)生效,必须配合 role="columnheader" 或 role="rowheader" 语义角色,且需通过 JavaScript 动态同步更新。

aria-sort 应该写在哪个 HTML 元素上
手动切换排序时,别只改 class 或文字,必须同步更新 别只靠代码检查,得真听一遍。用 VoiceOver(macOS)或 NVDA(Windows)打开表格,聚焦到表头单元格,它会读出“姓名,列,已升序排序”之类提示。常见失效原因不是值写错,而是:
实际项目里最常漏掉的是动态更新后的 aria-sort 必须写在 或 上,且仅对当前单元格所代表的列(或行)生效。它不会自动影响表格其他部分,也不会触发排序行为——只是告诉辅助技术“这一列当前按什么顺序排”。常见错误是把它加在 或
上,那样完全无效。
ascending、descending、none(默认未排序)、other(极少用,如自定义多级排序)none,而非省略该属性——省略等于“未声明”,屏幕阅读器可能误判为不可排序 设 ascending;同一表格中最多一个列有 ascending 或 descending
JavaScript 动态更新 aria-sort 的正确写法
aria-sort 值。否则 NVDA、VoiceOver 会读错状态。典型错误是点击后只调用 sortData(),忘了 el.setAttribute('aria-sort', 'ascending')。,把它们的 aria-sort 都设为 none
调用 setAttribute('aria-sort', direction),其中 direction 是 'ascending' 或 'descending'
aria-sort 在数据重渲染前已写入,否则辅助技术可能读到旧值aria-sort 和 role=columnheader 的关系
aria-sort 只在元素具有语义化表头角色时才被正确识别。单纯一个 默认就有 role=columnheader,但如果你用了 role="columnheader",否则 aria-sort 会被忽略。
columnheader
是冗余的,但合法; 则需配 aria-sort 才有效
role="rowheader"(横向排序),aria-sort 同样适用,但值含义变为“本行内各单元格的排序方向”测试 aria-sort 是否生效的快捷方式
role="table" 或嵌套结构不规范(比如 直接放在 aria-sort 值拼写错误,比如写成 asc 或 up —— 只认 ascending/descending/none
text-indent: -9999px),导致辅助技术无法关联排序状态与列内容aria-sort 同步和 role 语义完整性,这两处一错,整个排序提示就形同虚设。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











