lang必须为IETF标准格式(如zh-CN)、须为直接子元素且唯一、标题层级必须连续,三者是可访问HTML硬性准入门槛;lang错致屏幕阅读器误读中文,嵌套或重复使AT跳过主内容,标题断裂导致用户“掉层”无法导航。

直接写对 lang、 和标题层级,比加一堆 ARIA 更管用——这三处写错,屏幕阅读器当场“失语”或“迷路”,不是体验打折,是功能瘫痪。
lang 属性必须严格匹配 IETF 标准格式
写成 lang="zh" 或 lang="ch",NVDA 和 VoiceOver 就会按英语音节逐字朗读中文内容,语义彻底断裂。真实场景里,用户听到的是“shì jiè”被读成 “shee-jer”,完全无法理解。
-
lang必须静态写在首屏 HTML 的标签上,JS 运行时 patch 无效 - 只允许白名单值:
zh-CN、zh-TW、zh-HK;模板引擎必须校验locale变量是否落入其中,否则 SSR 输出即不可用 - 局部语言切换(如引文含英文)用嵌套
,但根lang不可省略或错配
必须是 的直接子元素且全局唯一
多个 遇到 看到 真正难的不是写 ARIA,而是守住这四条线:语言标识、主内容锚点、标题骨架、交互语义。它们藏在 HTML 最底层,一旦松动,上层所有无障碍优化都变成空中楼阁。 或嵌套在 M 键会完全跳过主内容区——键盘用户根本找不到正文在哪。
;布局层必须统一收口标题层级必须连续,不能跳级或断裂
后紧跟 ,屏幕阅读器用户按 H 键导航会“掉层”——以为章节结束,实际内容还在继续,信息架构直接塌方。
必须以 或更高级别开头;若需重置层级,必须显式提供标题,不能留空 作卡片标题,嵌套在 主区下,立刻造成 H2→H2 断层document.createElement('h3') 可能直接跳到 h5
别用 div 模拟 button,语义化标签才是第一道防线
aria-pressed,漏一项,键盘用户就卡死。
自带聚焦、回车/空格触发、role="button"、type="button" 默认防提交,无需额外补tabindex="-1",或 CSS 把 outline 隐藏却没提供替代焦点样式display: none 或 visibility: hidden 的元素仍存在于 DOM,必须删节点或加 aria-hidden="true"
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











