risposta di Marnix comporta l'uso del padding superiore e inferiore dell'elemento contenuto; il mio comporta l'uso del bordo superiore e inferiore.
mi sono imbattuto su questa soluzione da sola durante il tentativo di capire come fare qualcosa di simile senza ricorrere alle tabelle: rendere dell'elemento centrale dell'altezza di 100%, ma poi impostare il modello di box-sizing a "border-box "(in modo che l'altezza includa non solo il contenuto all'interno della scatola ma anche i bordi attorno alla scatola), rendere i bordi superiore e inferiore veramente spessi (come, ad esempio, 20px), quindi utilizzare il posizionamento fisso per sovrapporre l'intestazione e il piè di pagina i bordi superiori e inferiori pazzi di spessore dell'elemento centrale.
Ecco il mio CSS campione:
html, body {
height: 100%;
margin: 0;
padding: 0;
}
#content {
height: 100%;
-moz-box-sizing: border-box;
box-sizing: border-box;
/* Ensure that the height of the element includes the
box border, not just the content */
border: 0;
border-top: 20px solid white;
border-bottom: 20px solid white;
/* Leave some space for the header and footer to
overlay. */
}
#header,
#footer {
position: fixed;
left: 0;
right: 0;
height: 20px;
background-color: #eee;
/* Specify a background color so the content text doesn't
bleed through the footer! */
}
#header {
top: 0;
}
#footer {
bottom: 0;
}
Questo funziona in Google Chrome 24 per Mac. Non l'ho provato in altri browser, però.
Speriamo che questo possa aiutare qualcun altro che sta ancora affrontando la tentazione di utilizzare solo un tavolo e ottenere già il layout di pagina. :-)
ehi, è un pò di lavoro ... ma sto avendo un problema Diciamo che volevo impostare un div all'interno del contenuto ad un'altezza del 100% rispetto all'altezza del contenuto ... come? – JCOC611
fai attenzione al collasso dei margini. – zzzzBov
@ JCOC611 assicurati che 'position: relative' sia impostato sull'elemento genitore quando vuoi usare il dimensionamento relativo. – zzzzBov