为提升进度条可访问性,应在标签添加aria-valuetext属性以提供自然语义描述;动态更新时需同步修改该属性;有可见标签时优先用aria-labelledby关联;避免冗余或重复播报。
直接在 标签上添加 aria-valuetext 属性即可,让屏幕阅读器读出更自然、易懂的文字说明(比如“已完成 75%”或“上传中,约剩余 2 分钟”),而不是只读数值。
只需在 元素上设置 aria-valuetext,值为描述性文本:
这样,支持 ARIA 的屏幕阅读器(如 NVDA、VoiceOver)会朗读“已完成 75%”,而非仅“75 percent”。
如果进度是实时变化的(如文件上传),需用 JavaScript 同步更新 aria-val,确保语义始终准确:
value 属性时,也更新 aria-valuetext
element.setAttribute('aria-valuetext', text)
"已处理 42 个文件,共 100 个"
若已有可见的文字说明(如旁边有个 上传中…),优先用 aria-labelledby 关联它:
上传中:照片.jpg
这样屏幕阅读器会把标签内容和进度值一起读出,比单独写 aria-valuetext 更灵活、更符合上下文。
aria-valuetext 仅用于增强语义,不影响视觉呈现,也不替代可见文字aria-valuetext="75 percent" 没有额外信息,不如省略aria-valuetext 和 aria-labelledby 指向同一信息,可能重复播报