In order to be accessible to visually impaired users, it is important that tables provides a description of its content before the data is
accessed.
The simplest way to do it, and also the one recommended by WCAG2 is to add a
<caption>
element inside the <table>
.
Other technics this rule accepts are:
- adding a concise description via
aria-label
or aria-labelledby
attributes in the <table>
.
- referencing a description element with an
aria-describedby
attribute in the <table>
.
- embedding the
<table>
inside a <figure>
which also contains a <figcaption>
.
- adding a
summary
attribute to the <table>
tag. However note that this attribute has been deprecated in HTML5.
See W3C WAI Web Accessibility Tutorials for more information.
This rule raises an issue when a <table>
has neither of the previously mentioned description mechanisms.
Noncompliant code example
<table> <!-- Noncompliant -->
...
<table>
Compliant solution
Adding a <caption>
element.
<table>
<caption>New York City Marathon Results 2013</caption>
...
</table>
Adding an aria-describedby
attribute.
<p id="mydesc">New York City Marathon Results 2013</p>
<table aria-describedby="mydesc">
...
</table>
Embedding the table in a <figure>
which also contains a <figcaption>
.
<figure>
<figcaption>New York City Marathon Results 2013</figcaption>
<table>
...
</table>
</figure>
Adding a summary
attribute. However note that this attribute has been deprecated in HTML5.
<table summary="New York City Marathon Results 2013">
...
</table>
Exceptions
No issue will be raised on <table>
used for layout purpose, i.e. when it contains a role
attribute set to
"presentation"
or "none"
. Note that using <table>
for layout purpose is a bad practice.
No issue will be raised either on <table>
containing an aria-hidden
attribute set to "true"
.