You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

h4设button、ul设tabpanel验证报错,ARIA角色有元素限制吗?

你遇到的报错是违反了HTML规范中ARIA语义重写的限制规则,并非验证器规则过于严格,也不是你用的ARIA角色本身非法,核心原因是你修改了自带强隐式语义的HTML元素的默认角色,引发了语义冲突:

两个报错的具体原因

  • h4使用role="button"报错
    标题元素(h1~h6)属于自带强内容语义的非交互元素,HTML规范明确禁止给这类内容展示类元素直接覆盖button这类交互角色。这种写法会让读屏等辅助设备识别混乱:原本应该被识别为四级标题的内容,突然被标记为按钮,会完全破坏用户对页面内容层级的认知。
    符合规范的写法是把交互元素放在标题内部,保留原生语义:
    <h4><button aria-controls="panel-1">...</button></h4>
    
  • ul使用role="tabpanel"报错
    ul的隐式语义是无序列表,默认仅能容纳li子元素,且辅助设备会默认统计列表项数量、告知用户这是列表内容;而tabpanel是面板容器角色,需要容纳任意类型的面板内容,两者语义完全冲突,因此规范不允许重写ul的默认语义为tabpanel。

为什么换成div就不报错

div是无原生语义的通用容器,本身没有任何隐式ARIA语义,因此给div设置任意合法的ARIA角色都不会触发语义冲突的校验规则。

内容的提问来源于stack exchange,提问作者wortwart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 01:24:01