Nella guida CSS di oggi vediamo come creare colonne con la stessa altezza indipendentemente dal contenuto utilizzando i CSS3 e la proprietà display: table.
[button link=”http://www.targetweb.it/tutorial/2013/colonne-stessa-altezza-css3/index.html” color=”blue” target=”blank” size=”large”]Demo[/button] [button link=”http://www.targetweb.it/download/2013/colonne-stessa-altezza-css3.zip” color=”blue” target=”blank” size=”large”]Download[/button]
Ammettilo, quante volte ti sei ritrovato a dover fronteggiare uno scenario di questo tipo:
Come vedete dando le due colonne, avendo contenuti differenti, di fatto non si adattano e risultano di due altezze differenti. Come fare a ovviare questo problema e rendere le due colonne perfettamente adatattate in altezza, anche con contenuto differente?
Per questo ci vengono incontro le proprietà CSS3 display:table – display:table-row; e display:table-cell;
Il funzionamento è piuttosto semplice, di fatto si usano i div come sorta di tabella formata da:
- Un div contenitore che funge da tabella principale a cui va associata la proprietà display:table;
- Un (o più) div “row” ovvero “di riga” che conterranno le nostre celle.
- Almeno due (altrimenti non avrebbe senso) div con proprietà table-cell, che avranno la stessa altezza pur avendo contenuti differenti.
Codice Html e CSS3 per creare le due colonne alla stessa altezza
Ecco la struttura HTML principale per le colonne:
<!--Demo Code --> <div id="contenitore"> <div id="colrow"> <div id="colsx"> <h2>Colonna SX</h2> <p>Lorem Ipsum è un testo segnaposto utilizzato nel settore della tipografia e della stampa. Lorem Ipsum è considerato il testo segnaposto standard sin dal sedicesimo secolo, quando un anonimo tipografo prese una cassetta di caratteri e li assemblò per preparare un testo campione. È sopravvissuto non solo a più di cinque secoli</p> </div><!-- Colsx--> <div id="coldx"> <h2>Colonna DX</h2> <p>Lorem Ipsum è un testo segnaposto utilizzato nel settore della tipografia e della stampa.</p> </div><!-- ColDx--> </div><!-- ColRow--> </div><!-- Contenitore-->
Come potete notare:
- #Contenitore è il div principale che conterrà il nostro layout
- #ColRow è il div a cui applicare la row, ovvero la riga della nostra tabella
- #ColSx e #Coldx sono le nostre due table-cell ovvero le colonne che dovranno avere la medesima altezza.
Ecco nello specifico la “magia” CSS3:
#contenitore{display:table; width:100%; height:100%;min-width:100%;min-height:100%;} #colrow{ display:table-row; height:100%; } #colsx{ display:table-cell; background:red; float:left; width:50%; height:100%; } #coldx{ display:table-cell; background:green; float:right; width:50%; height:100%; }
Come noterete non ho fatto altro che applicare le informazioni specificate nel primo paragrafo di questo articolo nel nostro CSS.
NOTA IMPORTANTE: se non specificate height:100% nel table-row le colonne non prenderanno la stessa altezza!
Risultato finale
[button link=”http://www.targetweb.it/tutorial/2013/colonne-stessa-altezza-css3/index.html” color=”blue” target=”blank” size=”large”]Demo[/button] [button link=”http://www.targetweb.it/download/2013/colonne-stessa-altezza-css3.zip” color=”blue” target=”blank” size=”large”]Download[/button]
Aggiornamento (05/05/2014)
Nelle nuove versioni di Chrome/Safari potreste incappare in un spiacevole bug, per evitare problemi usate il seguente codice/Fix:
<style> #contenitore{display:table;} #colrow{ display:table-row; width: 100%; } #colrow > * { display: table-cell; border: 1px solid red; vertical-align: middle; /*Fix Chrome/Safari */ } </style> <div id="contenitore"> <div id="colrow"> <div class="col"> <h2>Colonna SX</h2> <p>Lorem Ipsum è un testo segnaposto utilizzato nel settore della tipografia e della stampa. Lorem Ipsum è considerato il testo segnaposto standard sin dal sedicesimo secolo, quando un anonimo tipografo prese una cassetta di caratteri e li assemblò per preparare un testo campione. È sopravvissuto non solo a più di cinque secoli</p> </div><!-- Colsx--> <div class="col" style="background:blue;"> <h2>Colonna DX</h2> <p>Lorem Ipsum è un testo segnaposto utilizzato nel settore della tipografia e della stampa.</p> </div><!-- ColDx--> </div><!-- ColRow--> </div><!-- Contenitore-->
Questo articolo ti è stato utile? Condividilo sui tuoi social network preferiti o scrivi nei commenti!