Context: The main navigation of a personal website.
Bad code Bad code
<div class="nav">
<div>
<div>about</div>
<div>thoughts</div>
</div>
</div>Issues and how to fix them 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. - Use
<nav>for the main navigation, it represents a landmark with links to external or internal pages. Screen reader users may use shortcuts to access the navigation directly or skip it. - Use
<ul>or<ol>to structure related links semantically and visually. Screen readers usually announce the number of items in a list. - If the order of items in the navigation matters, use
<ol>, otherwise<ul>. - A click event on a
divtriggers only on click. Use<a href="">to link to other pages. It’s (more) accessible to keyboard, screen reader, and mouse users than a fake JavaScript-only link.
Good code Good code
<nav>
<ul class="nav">
<li>
<a href="/about">about</a>
</li>
<li>
<a href="/thoughts">thoughts</a>
</li>
</ul>
</nav>