Ho studiato un po 'e da quello che ho scoperto hai quattro opzioni:
Versione 1: div genitore con visualizzazione come cella di tabella
Se non ti dispiace utilizzare il display:table-celldiv sul tuo genitore, puoi utilizzare le seguenti opzioni:
.area{
height: 100px;
width: 100px;
background: red;
margin:10px;
text-align: center;
display:table-cell;
vertical-align:middle;
}
Dimostrazione dal vivo
Versione 2: Div padre con blocco di visualizzazione e cella di tabella per la visualizzazione del contenuto
.area{
height: 100px;
width: 100px;
background: red;
margin:10px;
text-align: center;
display:block;
}
.content {
height: 100px;
width: 100px;
display:table-cell;
vertical-align:middle;
}
Dimostrazione dal vivo
Versione 3: div principale mobile e div di contenuto come cella della tabella di visualizzazione
.area{
background: red;
margin:10px;
text-align: center;
display:block;
float: left;
}
.content {
display:table-cell;
vertical-align:middle;
height: 100px;
width: 100px;
}
Dimostrazione dal vivo
Versione 4: posizione div padre relativa con posizione contenuto assoluta
L'unico problema che ho avuto con questa versione è che sembra che dovrai creare il css per ogni specifica implementazione. La ragione di ciò è che il div di contenuto deve avere l'altezza impostata per il riempimento del testo e il margine superiore verrà calcolato da quello. Questo problema può essere visto nella demo. Puoi farlo funzionare manualmente per ogni scenario modificando la% di altezza del div del contenuto e moltiplicandolo per -.5 per ottenere il valore massimo del margine.
.area{
position:relative;
display:block;
height:100px;
width:100px;
border:1px solid black;
background:red;
margin:10px;
}
.content {
position:absolute;
top:50%;
height:50%;
width:100px;
margin-top:-25%;
text-align:center;
}
Dimostrazione dal vivo