So che questa domanda è stata posta più di due anni fa, ma per tutti gli spettatori recenti, ecco una soluzione alternativa, che presenta alcuni vantaggi rispetto alla soluzione di Marc-François:
div {
height: 50px;
border: 1px solid blue;
line-height: 50px;
}
Qui aggiungiamo semplicemente solo un line-heightuguale a quello dell'altezza del div. Il vantaggio è che ora puoi modificare la proprietà di visualizzazione del div come ritieni opportuno, ad inline-blockesempio, e il suo contenuto rimarrà centrato verticalmente. La soluzione accettata richiede di trattare il div come una cella di tabella. Dovrebbe funzionare perfettamente, cross-browser.
L'unico altro vantaggio è che è solo un'altra regola CSS invece di due :)
Saluti!
<table>e applicarevalign='middle'ai suoi<td>s.