E 'a causa della effettiva possibilità di conoscere la vera altezza del elem ent in cui vuoi centrare verticalmente. Per capirlo, pensa prima a come funziona il centraggio orizzontale automatico. Hai un div a cui hai dato una larghezza (fissa o percentuale). La larghezza può essere calcolata in una certa misura. Se è a larghezza fissa, ottimo. Se è flessibile o reattivo (percentuale), almeno hai un intervallo che la larghezza coprirà prima di raggiungere il punto di interruzione successivo. Prendi quella larghezza, meno qualsiasi cosa sia dentro e dividi il resto su entrambi i lati.
Ora, con quelle informazioni, come potrebbe il browser calcolare l'infinita quantità di variazioni in cui il div si svilupperà verticalmente? Tieni a mente la dimensione dell'elemento, l'involucro di testo, i paddings e la reattività modificheranno anche la larghezza e imporranno il testo a un ulteriore avvolgimento, e via, e su di esso andrà.
È un compito impossibile? Non è vero, i CSS hanno dedicato tempo e impegno a coprirlo? Non vale il loro tempo, immagino.
E questa è fondamentalmente la risposta che dico ai miei studenti.
Ma ... non preoccupatevi! Bootstrap v4 alpha ha capito vertical centering!
EDIT
Siamo spiacenti di modificare questo ritardo, ma ho pensato che si può prendere in considerazione questa soluzione per centrare verticalmente ed è abbastanza semplice, facendo uso della funzione di calc
<div class="foo"></div>
.foo {
background-color: red;
height: 6em;
left: calc(50% - 3em);
position: absolute;
top: calc(50% - 3em);
width: 6em;
}
Guardalo HERE
Semplicemente non lo fa. Il caso d'uso per centrare il contenuto orizzontalmente era presumibilmente molto più comune di farlo verticalmente. – TZHX
@TZHX Tecnicamente, * può * centrare verticalmente. Vedi questo esempio - https://jsfiddle.net/skdjhpo8/ –
L'allineamento verticale in CSS è un mito –