Premetto che é la prima volta che provo utilizzare i div per creare il template di una pagina. PRima ho sempre usato le tabelle senza alcun problema ma vorrei fare qualcosa di un po' piú professionale e quindi ho deciso di passare ai div. Purtroppo giá adesso mi si propone un problema la cui soluzione é a me ignota. Io ho un div contenitore con height:100% (anche body ha height: 100%). Dentro questo div ci sono altri 3 div: header, contents e footer.
Mentre header e footer hanno grandezza fissa, lo stesso non si puó dire di contents. Quello che vorrei fare é che, se header + contents + footer é minore dell'altezza della pagina allora footer deve essere allineato a fondo pagina e deve esserci uno spazio bianco fra contents e footer. Altrimenti footer deve essere subito sotto a contents. Il problema e che se per footer metto poistion:relative, non riesco ad allinearlo a fondo pagina a peno di non sapere gia l'altezza della stessa nonché di header + conents. Se invece metto position:absolute, viene si allineato a fondo pagina ma, se header + contents e minore dell'altezza della pagina, footer finisce sopra a contents. Presumo questo sia dovuto al fatto che, anche se contents si allarga per via dei suoi contenuti, lo stesso non accada al div contenitore che rimane sempre 100% causando questo errore.
Sintetizzando il mio codice ha circa questo aspetto:
codice:
<div id='main'>
<div id='header'></div>
<div id='contents'></div>
<div id='footer'></div>
</div>
Tutti i div hanno position:relative meno che main che ha position:absolute. L'effetto che vorreti tenere é simile a quello ottenuto con le tabelle in questo modo:
codice:
<table height=100%>
<tr><td height=30></td></tr>
<tr><td height=100></td></tr>
<tr><td>Questo si adatta in modo da riempire la pagina oppure é uguale a 0</td></tr>
<tr><td height=30></td></tr>
</table>
In qeusto caso la riga in cui il valore height non é settato é alta 0 se le altre righe sono maggiori del 100% della pagina, altrimenti é alta la rimanenza per far si che la tabella sia alta il 100%.
Spero di essermi fatto capire
PS: Scusate gli errori di battitura ma sono con una tastiera inglese e faccio qualche casino...