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?