«Вертикальное центрирование возможно только в том случае, если элемент расположен абсолютно и имеет известную высоту». - Это утверждение неверно.
Вы можете использовать display:inline-block;
и его возможность выровнять по вертикали в поле его родителя. Этот метод позволяет выровнять элемент, не зная его высоты и ширины, хотя он требует, чтобы вы, по крайней мере, знали высоту родителя.
Если ваш HTML это;
<div id="container">
<div id="aligned-middle" class="inline-block">Middleman</div>
<div class="strut inline-block"> </div>
</div>
И ваш CSS является:
#container {
/* essential for alignment */
height:300px;
line-height:300px;
text-align:center;
/* decoration */
background:#eee;
}
#aligned-middle {
/* essential for alignment */
vertical-align:middle;
/* decoration */
background:#ccc;
/* perhaps, reapply inherited values, so your content is styled properly */
line-height:1.5;
text-align:left;
}
/* this block makes all the "magic", according to http://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align specification: "The baseline of an 'inline-block' is the baseline of its last line box in the normal flow, unless it has either no in-flow line boxes or if its 'overflow' property has a computed value other than 'visible', in which case the baseline is the bottom margin edge." */
#container .strut {
/* parent's height */
height:300px;
}
.inline-block {
display:inline-block;
*display:inline;/* for IE < 8 */
*zoom:1;/* for IE < 8 */
}
Тогда # выровнен среднего будет сосредоточено в #container. Это самое простое использование этой техники, но с ней приятно познакомиться.
Правила, обозначенные знаком «/ * для IE < 8 * /", должны быть помещены в отдельный стилизованный лист с использованием условных комментариев.
Вы можете просмотреть рабочий пример этого здесь: http://jsfiddle.net/UXKcA/3/
редактировать: (именно этот фрагмент тестировался в IE6 и ff3.6, но я использую это много, это довольно кросс-браузер, если потребуется. поддержка фф < 3, вам также необходимо добавить display:-moz-inline-stack;
под display:inline-block;
в .inline-block
правила.)
Когда вы говорите выравнивание, неясно, с чем вы хотите выровнять div. Вы имеете в виду центр div? –
Вы хотите вертикально выровнять div в центре – Starx
К сожалению, я имею в виду выравнивание по центру. –