Spesso ci capita di dover centrare degli elementi contenuti all’interno di un <div> più grande e di dimensioni prefissate. Sappiamo che se utilizziamo l’attributo margin: 0 auto; l’oggetto viene centrato in orizzontale. Scrivere margin: 0 auto; equivale a dichiarare:
margin-top: 0; margin-right: auto; margin-bottom: 0; margin-left: auto;
Tuttavia, questo metodo non centra l’oggetto contenuto nel <div> in verticale. In realtà, anche utilizzando margin-top: auto e margin-bottom: auto, non risolveremmo un bel niente.
Per risolvere questo piccolo grande problema, ci viene in aiuto un trucchetto che permette di risolvere il problema. Vedremo come centrare l’oggetto in verticale e in orizzontale relativamente alla pagina, quindi al tag <body>. Per fare questo, occorre definire un #ID nel nostro foglio di stile come di seguito specificato:
#absolute_center { width: 100px; height: 100px; margin: auto; position: absolute; top: 0; right: 0; bottom: 0; left: 0; background: blue; }
e poi applicarlo al tag <div>
<div id="absolute_center">Questo DIV è centrato rispetto alla pagina</div>
Con lo stesso meccanismo, possiamo centrare un <div> all’interno di un altro <div>, ma sarà necessario specificare delle dimensioni prefissate sia in altezza che in larghezza anche per il <div> più esterno.
#inner{ background: red; bottom: 0; height: 100px; left: 0; margin: auto; position: absolute; top: 0; right: 0; width: 100px; } #outer { border:1px solid black; position: relative; height: 400px; width: 400px; }
e quindi, in html, scriveremo:
<div id="outer"> <div id="inner"> DIV centrato all'interno di un DIV di dimensioni 400x400px </div> </div>
Semplice, no?