Soy consciente de que esta pregunta se hizo hace más de dos años, pero para cualquier espectador reciente, aquí hay una solución alternativa, que tiene algunas ventajas sobre la solución de Marc-François:
div {
height: 50px;
border: 1px solid blue;
line-height: 50px;
}
Aquí simplemente solo agregamos un line-height
igual a la altura del div. La ventaja es que ahora puede cambiar la propiedad de visualización del div como mejor le parezca, inline-block
por ejemplo, y su contenido permanecerá centrado verticalmente. La solución aceptada requiere que trate el div como una celda de tabla. Esto debería funcionar perfectamente en varios navegadores.
La única otra ventaja es que es solo una regla CSS más en lugar de dos :)
¡Salud!
<table>
y aplicarlovalign='middle'
a su<td>
s.