Pagine web e carta stampata differiscono sotto molti aspetti. La differenza più importante, è che il formato cartaceo è "immutabile". Ad esempio chi gestisce l'impaginazione di una rivista è certo che ogni lettore vedrà gli articoli e le immagini proprio come da lui stabilito. I caratteri e la loro grandezza saranno esattamente quelli voluti, la pagina avrà una larghezza ed un'altezza prestabilita. Tutti gli elementi grafici saranno posizionati come predisposto. La pagina web al contrario è estremamente mutevole. La sua rappresentazione dipende dal tipo di dispositivo (PC, PDA, WebTV, Stampante) dal browser (Internet Explorer, Linx, Screen Reader), dal sistema operativo, dalla risoluzione e dalla grandezza del monitor, dai font disponibili. Non c'è nessun reale controllo su come apparirà una pagina web.
Risulta quindi fondamentale che l'informazione contenuta in una pagina web sia del tutto separata dall'impaginazione.
Quindi l'HTML (o meglio XHTML) dovrà essere usato esclusivamente per i contenuti, mentre il layout sarà realizzato attraverso i CSS.
I CSS, acronimo di Cascading Style Sheets (Fogli di Stile a Cascata), non sono propriamente né un linguaggio di programmazione, né un linguaggio di markup. Le prime specifiche riguardanti i CSS risalgono al 1996, anno in cui il W3C presenta questa tecnologia con lo scopo di separare la presentazione della pagine web dal loro contenuto. Sebbene sin dagli inizi questa rivoluzionaria idea di separazione delle funzioni abbia affascinato i designers più attenti, ci sono voluti almeno 5 anni perchè i CSS si affermassero significativamente tra i progettisti. Il motivo di tale ritardo, oltre all'inerzia da parte dei designers, è riconducibile allo scarso supporto che all'epoca fornivano i browser verso i CSS. Solamente tra il 2000 e il 2002 i browser più utilizzati (tra i quali Internet Explorer) iniziarono ad occuparsi in modo significativo del supporto verso i CSS.
I CSS sono la tecnologia privileggiata per la progettazione tableless. Infatti, oltre a poter descrivere in maniera separata dai contenuti come si debbano comportare ad esempio i font e i colori, essi permettono una corretta strutturazione delle pagine. Anziché utilizzare impropriamente le celle di una tabella per organizzare gli spazi di una pagina, i CSS permettono ai designers di strutturare i contenuti in modo logico, utilizzando i tag semanticamente corretti nel codice sorgente HTML.
Il tag <div> può essere definito il tag fondamentale per un impaginazione attraverso i CSS. <div> viene definito come "generic block-level element". Il fatto che sia un elemento block-level garantisce il fatto che possa contenere qualsiasi tipo di elemento HTML, inclusi altri <div>. Inoltre, la sua presentazione naturale (quindi senza fogli di stile) è totalmente neutra: questo elemento si presenta di default senza margini, bordi o padding. È quindi il contenitore per eccellenza per realizzare layout senza l'uso di tabelle: ad ogni <div> portante verrà associata una sezione logica della pagina, che verrà successivamente affinata attraverso l'uso di altri <div> annidati.