首先,澄清一个普遍存在的误解:na v标签实际上可以用于实现面包屑导航——但前提是必须正确添加语义化属性和结构,例如aria-label="Breadcrumb"、使用ol有序列表以及标记当前页面aria-current="page"。仅仅包裹一个na v标签是不够的,需要让辅助技术明确识别这是“上下文导航”,而非网站的主导航入口。

换言之,所谓“na v标签不能用于面包屑”的观点其实过于绝对了。关键不在于能否使用,而在于如何正确使用。
面包屑导航不属于主导航
在HTML5中,na v元素的原始作用是标记页面的主导航区块——即用户在全站范围内跳转的主要入口集合,例如顶部菜单、侧边栏导航、页脚链接组。而面包屑导航则属于辅助性导航,主要展示当前页面在网站层级结构中的位置路径。它属于“上下文导航”,在语义上与na v的默认用途确实不太一致。然而,语义化并非非此即彼的教条,关键在于如何组合使用标签和属性来表达准确的意图。
正确语义应使用 aria-label 与代替 nav 的方案
虽然许多人建议避免直接用na v包裹面包屑,但我们完全可以借助更精确的语义组合来兼顾无障碍和可维护性:
- 使用
ol(有序列表)包裹面包屑各层级,以体现清晰的层级顺序与逻辑关系 - 为
ol添加aria-label="Breadcrumb"属性,明确告知辅助技术这是面包屑导航 - 每个
li中的链接使用a标签,当前页面则使用span(禁用链接)并加上aria-current="page"
实际代码示例
下面是一个符合无障碍标准与语义化规范的实际代码示例:
这段代码中,role="na vigation"配合aria-label="Breadcrumb",既保留了na v的语义(通过role),又明确区分了面包屑与主导航。
为什么不能强行套用 na v
这里需要特别提醒:滥用na v标签会干扰屏幕阅读器用户的导航效率。他们习惯使用快捷键(例如NVDA的N键)快速跳转到na v区域。如果将面包屑导航也放入na v,就会为用户增加一个无关的跳转点,造成信息过载与定位不准。HTML语义化的核心从来不是“看起来像导航”,而是“准确传达意图”。面包屑导航应当使用专门为其设计的标记方式,切勿为了省事直接套用na v标签。
