Выравнивается просто:
.container {
display: table-cell;
vertical-align: middle;
}
<div class="container"> <p class="middled">Вертикально отцентрированный элемент</p> </div>
Но IE6 не поддерживает display:table-cell;
В IE6 можно воспользоваться js:
.middled {
margin-top: expression((parentNode.offsetHeight - this.offsetHeight)<0 ? "0" : (parentNode.offsetHeight - this.offsetHeight)/2 + "px");
}
Эту часть css кода можно отделить от основной части для использования только в IE6 с помощью Условные комментарии
Если мы еще хотим отцентрировать блок middled по горизонтали, нужно добавить еще один дополнительный обрамляющий блок для container, который будет играть роль таблицы, зададим для него display:table;
<div class="wrap"><div class="container"> <p class="middled">Вертикально отцентрированный элемент</p> </div></div>
CSS в этом случае будет следующий:
*{
margin:0;
padding:0;
}
.wrap {
display: table;
width:100%;
}
.container {
display: table-cell;
vertical-align: middle;
height:500px;
}
.middled{
width:200px;
margin:0 auto;
}
{filer 165 download}
Как отцентрировать по вертикали и горизонтали в блоке развернутом по высоте на всю страницу