Context: A link to another page.
Bad code
<div>About us</div><div onClick="location.href='about.html'">
About us
</div><div data-page="aboutus" data-url="index.php">
About us
</div>…or any other variation of this pattern where an element other than <a> is used to link to a page.
Issues and how to fix them
- The
<div>element is an element of last resort, for when no other element is suitable. Use of the<div>element instead of more appropriate elements leads to poor accessibility. - A click event on a
divtriggers only on click. A click event on anatriggers on click and if the user presses the Enter key. - A
divisn’t keyboard focusable. - The context menu on right click doesn’t provide options like “Open in new tab/window” or “Bookmark this link”.
- By default, screen readers just announce the text in a
div(e.g. “about us”), in a proper link (<a>) a screen reader announces the text and the role (e.g. “about us, link”). - Attributes like
aria-labelmight not work (properly) ondivelements. - Screen reader users may use a shortcut to list all links in a page. “div-links” wouldn’t be listed, unless they have a role of “link”.
Good code
<a href="aboutus.html">
About us
</a>