Самый распространенный способ выравнить блог по вертикали - сделать примерно такое:
div {
width: 50px;
height: 50px;
position:relative;
margin-top: -25px;
top: 50%;;
}
Так же работает и с выравниванием по горизонтали:
div {
width: 50px;
height: 50px;
position:relative;
margin-top: -25px;
top: 50%;
left: 50%;
margin-left: -25px;
}
Можно ещё указать родителю что-то вроде: display: table-cell, а дочернему vertical-align: middle;
Ещё есть крутая штука - flexbox. Пока что этот стандарт не утвержден w3c, но в хроме и опера работает и в поздних версиях лисы. Тут вообще все элементарно:
div {
margin: auto;
}
Блок центруется идеально по центру и по горизонтали и по вертикали. Но я бы не советовал пока что использовать флекс, тк, его синтаксис часто меняется. Но моё мнение, что за флексом лежит будущее :)