
1.3.1: Info and Relationships
Guideline 1.3.1 "Info and Relationships" under WCAG 2.0 ensures that information, structure, and relationships conveyed through presentation are also available in text. This means that headings, lists, tables, and other structural elements must be marked up properly so that users relying on assistive technologies can understand the content's organization and relationships. For instance, using proper HTML elements like <h1> to <h6> for headings, <ul>, <ol>, and <li> for lists, and <table>, <th>.
Importance of 1.3.1: Info and Relationships Success Criterion
The importance of 1.3.1 "Info and Relationships" lies in its role in ensuring accessibility for users with disabilities, especially those using screen readers or other assistive technologies. Properly structured content allows these technologies to interpret and present the content accurately. For example, a screen reader can announce headings, lists, and table structures to help a visually impaired user navigate the page effectively.
If these elements are not marked up correctly, users might miss critical information or find it challenging to understand the content. Therefore, adhering to this guideline helps in creating inclusive web experiences that are accessible to all users.
Primary Use Cases and Requirements Under Guideline 1.3.1: Info and Relationships (Level A)
Use Case 1: Headings and Subheadings
Headings and subheadings should be used to create a logical structure for your content. Proper
use of headings allows screen readers to navigate content efficiently and provides visual
structure for sighted users. Use HTML tags <h1>
to <h6>
to
denote headings, with <h1>
being the main heading and <h2>
to <h6>
for subheadings.
Example: A blog post might use <h1>
for the title,
<h2>
for sections, and <h3>
for subsections, allowing a
screen reader to list and jump to different sections of the post.
How to Test: Use a screen reader like NVDA or JAWS to navigate the page by headings. Check if the headings are announced correctly and in a logical order.
Exceptions: None.
Using ARIA: If HTML5 semantics can't be used, use role="heading"
and aria-level
attributes to denote headings. For example,
<div role="heading" aria-level="1">Title</div>
.
Use Case 2: Lists
Lists should be used to group related items, making content easier to scan and understand.
Unordered lists (<ul>
) are used for items without a specific order, while
ordered lists (<ol>
) are for items with a sequence. Each list item should be
enclosed in an <li>
tag.
Example: A recipe page lists ingredients using <ul>
and steps
using <ol>
. This helps screen readers announce items correctly and allows
users to follow the sequence of steps.
How to Test: Use a screen reader to navigate through the list items. Ensure that the screen reader correctly identifies and announces the list and its items.
Exceptions: None.
Using ARIA: If HTML5 semantics can't be used, use role="list"
for
<ul>
and <ol>
, and role="listitem"
for
<li>
. For example,
<div role="list"><div role="listitem">Item</div></div>
.
Use Case 3: Tables
Tables are used to present tabular data. Properly marked-up tables provide relationships between
data cells and headers. Use <table>
for tables, <th>
for
headers, <tr>
for rows, and <td>
for data cells. Ensure
<th>
elements use scope
attributes to define their scope (row or
column).
Example: An e-commerce site displaying product specifications in a table format ensures that a screen reader can accurately convey the relationships between headers and data cells, helping users compare products.
How to Test: Use a screen reader to navigate through the table. Ensure that the headers and their associated data cells are announced correctly and the relationships are clear.
Exceptions: Simple layout tables can use <table>
without
headers if the structure is clear.
Using ARIA: If HTML5 semantics can't be used, use ARIA roles such as
role="table"
, role="row"
, role="columnheader"
, and
role="cell"
. For example,
<div role="table"><div role="row"><div role="columnheader">Header</div><div role="cell">Data</div></div></div>
.
Use Case 4: Form Elements
Form elements should be properly labeled to ensure users understand their purpose. Use
<label>
for form labels and associate them with form controls using the
for
attribute, which should match the id
of the form control.
Example: A contact form where each input field is properly labeled allows screen reader users to understand the purpose of each field, ensuring they can fill out the form correctly.
How to Test: Use a screen reader to navigate through the form. Ensure that each form control is announced with its label and that the purpose of each control is clear.
Exceptions: None.
Using ARIA: If HTML5 semantics can't be used, use ARIA attributes like
aria-labelledby
to associate labels with form controls. For example,
<input type="text" aria-labelledby="labelID">
.
Use Case 5: Semantic HTML Elements
Semantic HTML elements provide meaning to the web content, making it more accessible. Use
elements like <nav>
for navigation, <article>
for
articles, <aside>
for sidebars, and <footer>
for the
footer. These elements help assistive technologies recognize different parts of the page.
Example: A news website using semantic HTML tags helps assistive technologies recognize different parts of the page, improving the navigation and understanding of the content structure for users.
How to Test: Use a screen reader to navigate through the page and ensure that the landmarks (e.g., navigation, main content, footer) are correctly identified and announced.
Exceptions: None.
Using ARIA: If HTML5 semantics can't be used, use ARIA roles such as
role="navigation"
, role="main"
, role="complementary"
, and
role="contentinfo"
to provide similar structure. For example,
<div role="navigation">...</div>
.
Use Case 6: ARIA Roles and Properties
ARIA (Accessible Rich Internet Applications) roles and properties enhance the accessibility of
dynamic content and complex widgets. Use ARIA roles like role="navigation"
for
navigation bars, role="main"
for the main content, and properties like
aria-labelledby
and aria-describedby
to provide additional context.
Example: A dynamic web application using ARIA roles and properties ensures that even complex widgets like tab panels and accordions are accessible to screen reader users, providing them with necessary information about their functionality and state.
How to Test: Use a screen reader to interact with dynamic content and widgets. Ensure that the roles, states, and properties are announced correctly and the content is usable.
Exceptions: None.
Using ARIA: ARIA should be used to enhance HTML5 semantics or when HTML5
semantics are not available. For example, use role="tab"
for tab panels,
role="button"
for interactive buttons, and aria-expanded
to indicate
the state of expandable content.