怎么通过 HTML 的 和 标签构建语义化的网页侧边栏菜单
作者:RiverSoul
时间:2026-07-09
浏览:0
说到侧边栏的语义化,很多开发者容易陷入“位置决定论”的误区——以为只要放在页面左边或右边,用 或者 都没什么区别。但关键不在于“放哪”,而在于“是什么”。 表示内容与主文相关但可独立存在,比如广告、延伸阅读、作者简介; 则专指导航用途,比如分类目录、快捷入口。两者常配合使用,但绝不能混用或替代。 先
说到侧边栏的语义化,很多开发者容易陷入“位置决定论”的误区——以为只要放在页面左边或右边,用 或者 都没什么区别。但关键不在于“放哪”,而在于“是什么”。 表示内容与主文相关但可独立存在,比如广告、延伸阅读、作者简介; 则专指导航用途,比如分类目录、快捷入口。两者常配合使用,但绝不能混用或替代。

先分清:什么该放 ,什么该放
如果侧边栏里主要是跳转链接(比如“分类目录”“快捷入口”“用户中心”),本质上就是导航行为,必须用 包裹,并加上 aria-label 说明用途。例如:
- 如果侧边栏包含广告、作者简介、延伸阅读、标签云这类补充性内容,才适合用
- 常见错误:把整个侧边栏都套上
,结果导航部分失去语义;或者全用,让读屏软件无法识别导航意图
结构嵌套要合理: 可在 内,但别反着来
当侧边栏同时有导航和辅助内容时,推荐外层用 统一语义归属,内部再按功能拆分:
- 导航区块用
,并确保每个链接是,不建议用模拟按钮 - 其他模块如“热门标签”“最新更新”,各自用
包裹,并配上标题 - 所有列表类内容(菜单项、标签、文章推荐)统一用
或,不要用堆砌标题层级必须连贯,不能从
跳到页面大纲不能断层。假设主内容用了
(文章标题)和(小节标题),那么侧边栏里的模块标题就应该从开始:- 错例:
—— 破坏整页语义结构 - 对例:
- 可以用浏览器开发者工具的“可访问性树”视图验证标题是否逐级递进
别忘了无障碍支持:高亮当前项要用
aria-current="page"纯靠 CSS 的
.active类容易不同步,尤其刷新或回退时。更可靠的做法是服务端或构建时注入aria-current属性:- HTML 示例:
博客首页 - CSS 响应:
a[aria-current="page"] { background: #007bff; color: white; } - 这对屏幕阅读器用户至关重要——它会朗读“博客首页,当前页面”,而不仅仅是视觉变化
- 错例:
