Markup from hell

A collection of bad practices in HTML, copied from real websites.

  1. #28 alert level 1

    submitted on by Manuel
    <h1 aria-busy="true" aria-live="polite" role="alert" class="sr-only">
    Done
    </h1>

    Details and tips on how to fix the diabolic code of #28.

  2. #27 <a6>

    submitted on by Hidde
    <h6>Popular Cities</h6>
    <div>
    <h6 class="footerLinks">Amsterdam</h6>
    <h6 class="footerLinks">Rotterdam</h6>
    <h6 class="footerLinks">Utrecht</h6>
    <h6 class="footerLinks">Den Haag</h6>
    <h6 class="footerLinks">Eindhoven</h6>
    </div>

    Details and tips on how to fix the diabolic code of #27.

  3. #26 HTMHell special: tasty buttons

    submitted on by Manuel

    The second HTMHell special focuses on another highly controversial pattern in front-end development:

    🔥 the burger button. 🔥

    The burger button and his tasty friends (kebab, meatball and bento) usually reveal a list of links when activated. According to our studies, these buttons are highly optimized for mouse and touch users, but lack support for keyboard and screen reader users in most cases.

    After less than 1 hours of research, HTMHell presents a collection of 18 different bad practices found on real websites.

    <div class="burger">
    <span></span>
    <span></span>
    <span></span>
    </div>

    Details and tips on how to fix the diabolic code of #26.

  4. #25 A link is a button is a link

    submitted on by Andrea
    <a tabindex="0" type="button" href="/signup" role="link">
    <span class="focus" tabindex="-1"></span>
    <span>
    <span>
    <span>Sign up</span>
    <i class="icon icon-external-link" aria-hidden="true" role="img"></i>
    </span>
    </span>
    </a>

    Details and tips on how to fix the diabolic code of #25.

  5. #24 A placeholder is not a label

    submitted on by Manuel
    <input type="text" placeholder="First name">

    Details and tips on how to fix the diabolic code of #24.