aria-sort 只能用在 上,合法值为"none"、"ascending"、"descending"、"other",需配合 javascript 动态更新并同步视觉图标与焦点。

aria-sort 只能用在 <th> 上,其他地方加了也白加
<p>它不是通用 ARIA 属性,专为表格列头设计。加在 <code><td>、<code><tr> 或外层 <code><div> 里,屏幕阅读器完全无视——AT 不会读,也不会触发任何语义行为。
<p>常见错误写法:<code><td aria-sort="ascending">张三</td> 或 <div aria-sort="none"><th>姓名</th></div>。这类写法看似“加了”,实则等于没加。
正确姿势只有一条:直接写在 <th> 开始标签内,例如:<code><th scope="col" aria-sort="ascending">姓名</th>。
合法值只有四个:"none"、"ascending"、"descending"、"other"
"none" 是隐式默认值,不写也等价于它,但显式写出更利于维护和调试;"ascending" 和 "descending" 表示标准线性排序方向;"other" 不是“随便填”或“还不知道”,而是明确告诉辅助技术:“这列用了非标准逻辑,比如‘置顶+时间’混合排序,别按升/降播报”。
大小写必须严格匹配,"Ascending" 或 "asc" 都无效;拼错(如 "desending")会导致属性被浏览器忽略。
别用 "unsorted"、"default" 这类自造值——它们没有语义,AT 不识别。
必须配合 JavaScript 动态更新,静态写死毫无意义
用户点一次表头,排序变了,但 aria-sort 还停在 "none",这就等于给盲人指了条错路。所以每次点击后,JS 必须做三件事:
使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。
- 清除所有
<th> 的旧 <code>aria-sort值(或设为"none") - 给当前排序列设对应值(
"ascending"或"descending") - 同步更新视觉图标(如
sorted-asc类),确保视觉与语义一致
别依赖列索引硬编码,用 data-sort-key="name" 这种语义化标识,避免增删列后 JS 逻辑崩掉。
视觉图标和 aria-sort 必须同步,否则可访问性直接失效
箭头图标只是视觉反馈,aria-sort 才是 AT 真正依赖的信号。两者不同步,等于“嘴上说升序,手上指降序”。
推荐用 CSS 伪元素实现图标:th.sorted-asc::after { content: '▲'; },JS 只负责切换 class;避免用 innerHTML 拼接字符,否则容易覆盖文本、丢失焦点、触发重复播报。
IE 对 ::after 在 <th> 上支持不稳定,若需兼容,改用 <code><span></span> 插入 Unicode 箭头(▲ / ▼),但注意别写成 HTML 实体(如 ▲),部分旧环境不渲染。
最易被忽略的一点:排序完成后,记得把焦点手动移到当前 <th> 上(<code>th.focus()),否则键盘用户会迷失在 tbody 里。










