De innovaties van de HTML5-specificatie zijn talrijk en veel ervan worden al ondersteund door het grootste deel van het browserlandschap - hieronder zou ik een interessante verandering in de regels voor het nesten van elementen willen benadrukken. HTML heeft altijd onderscheid gemaakt tussen blok- en inline-elementen. De Document Type Definition van HTML4 vermeldt bijvoorbeeld h1, p en div als blokelementen en a, span en img als inline-elementen.
Dit concept is nu verlaten (om goede redenen). In sommige gevallen negeerden veel webontwerpers de juistheid van de genoemde nestregel dat er geen blokelementen mogen worden gelokaliseerd binnen inline-elementen of het standaardgedrag met behulp van CSS-regels zoals display: inline; of display: blok; (wat vaak leidde tot ongeldige code) zonder verder oponthoud.
HTML5 verzacht dit onderscheid nu en noemt zelfs 9 verschillende categorieën waartoe een element kan behoren, waarbij een element in meerdere categorieën kan vallen. Het oude onderscheid tussen block- en inline-elementen wordt overboord gegooid en er wordt rekening gehouden met de veelheid aan betekenissen van tags op het web. Dit heeft in het bijzonder tot gevolg dat de volgende constructies geldige code vertegenwoordigen:
<a href="#">
<div>
<h1>Yeah</h1>
<p>
Der ganze Block ist verlinkt.
</p>
</div>
</a>
Het koppelen van een hele container die extra blokelementen bevatte, was voorheen alleen mogelijk (met geldige code) met behulp van trucs (bijvoorbeeld door de absolute positionering van een gekoppelde overlay-laag). Als alternatief konden de kop en de alinea aan elkaar worden gekoppeld. Dit leidde weer tot redundantie en de container was niet klikbaar. Dankzij de welkome uitbreiding van HTML5 is dit geen probleem meer.