De innovaties van de HTML5-specificatie zijn talrijk en veel ervan worden al ondersteund door het grootste deel van het browserlandschap - hieronder wil ik een interessante wijziging van de regels voor het nesten van elementen benadrukken. HTML heeft altijd onderscheid gemaakt tussen blok- en inline-elementen. De documenttypedefinitie van HTML4 noemt bijvoorbeeld h1, p en div als blokelementen en a, span, 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 volledige container met daarin meerdere blokken was voorheen alleen mogelijk (met geldige code) via omwegen (bijvoorbeeld door een gekoppelde overlaylaag absoluut te positioneren). Een alternatief was om de kop en de alinea te koppelen, wat echter leidde tot redundantie en de container onklikbaar maakte. Dankzij de welkome uitbreiding van HTML5 is dit probleem verleden tijd.