Вертикальное выравнивание элементов

Для вертикального выравнивания элементов для родительского блока обязательно должна быть задана высота (в любых единицах) и класс, которому привяжутся стили. Пусть будет класс .middle:

.middle {
    display: block; /* можно display: inline-block; */
    height: 300px;
    white-space: nowrap;
    text-align: center; /* если надо еще и по горизонтали выравнивать */
}
.middle > * {
    display: inline-block;
    vertical-align: middle;
    white-space: normal;
}
.middle:after {
    content: '';
    display: inline-block;
    width: 0;
    height: 100%;
    vertical-align: middle;
}