Skip to main content

HTML Guide

Bad value “tabpanel” for attribute “role” on element “ul”.

The role attribute in HTML is used to define the accessibility role of an element, which helps assistive technologies understand the purpose or type of the element. The value tabpanel is not appropriate for a <ul> element, which is used for unordered lists.

The role of tabpanel is intended to be used with elements that represent a tab panel, which is part of a tabbed interface. A tabbed interface consists of elements with roles like tablist, tab, and tabpanel. Typically, tabpanel is used with containers that house the content associated with a tab, such as a <div>.

To fix this error, ensure that the tabpanel role is applied to the correct element. Here’s a simple example of how a tab interface can be structured correctly:

<div role="tablist" aria-label="Sample Tabs">
  <button role="tab" aria-controls="panel-1" id="tab-1">Tab 1</button>
  <button role="tab" aria-controls="panel-2" id="tab-2">Tab 2</button>
</div>

<div role="tabpanel" id="panel-1" aria-labelledby="tab-1" hidden>
  <p>Content for Tab 1.</p>
</div>

<div role="tabpanel" id="panel-2" aria-labelledby="tab-2" hidden>
  <p>Content for Tab 2.</p>
</div>

In this example:

  • The role tablist is applied to the container element that directly contains the tab elements.
  • Each button serving as a tab has the role of tab.
  • Each tab panel, which contains the content for a tab, has the role of tabpanel.

Avoid using tabpanel on non-semantic or incorrectly associated elements like <ul>. Instead, use elements like <div> or <section> for tab panels, ensuring the roles align with the intended roles in a tabbed interface.

Learn more:

Related W3C validator issues