Обычно, когда мне нужно вертикальное центрирование, я использую пару элементов inline-block.У вас есть один элемент, который является полной высотой контейнера, и второй элемент, который является только высотой содержимого, которое будет центрировано.Они оба display:inline-block;vertical-align:middle
.
. Мне нравится использовать теги b для этого, потому что они не имеют смысловой значимости и крошечные:
<style>
.mycontainer {text-align:center;}
b.vcenter {display:inline-block;height:100%;width:1px;vertical-align:middle;}
b.vcenter+b {display:inline-block;vertical-align:middle;}
</style>
<div class="mycontainer">
<b class="vcenter"></b><b>This is my centered content<br>It makes me happy!</b>
</div>
Имейте в виду, этот конкретный пример кода не будет работать вIE7 из-за отсутствия селекторов inline-block и sibling (+), но тот же метод может быть реализован с использованием более сложного кода, который будет обрабатывать IE7.