Вертикальное выравнивание текста внутри блока
Вертикальное выравнивание текста внутри ячейки таблицы всегда просто. Достаточно использовать vertical-align: middle, вот и все дела. Но как вы знаете, эта фишка не работает в блочной верстке.
Что же делать?
Допустим у нас есть горизонтальное меню в виде списка высотой 40 пикселей. А в нем ссылки:
<h1>Вертикальное выравнивание текста внутри блока</h1>
<ul>
<li><a hrеf="#">Bla</a></li>
<li><a hrеf="#">Bla</a></li>
<li><a hrеf="#">Bla</a></li>
</ul>
Можно сколько угодно раз прописать vertical-align для li, все равно ничего путевого из этого не выйдет. Текст прижмется к верхней границе списка.
Можно конечно отжимать с помощью padding‘a, но это сработает только в том случае, когда все значения прописаны в абсолютных величинах - пикселях. В случае с em это не подойдет.
Существует простое и элегантное решение, которое не всем известно. Нужно указать свойство line-height для текста, равное высоте контейнера и текст встанет ровно по серединке блока!
ul{
width: 600px;
height: 40px;
}
ul li{
float: left;
display: block;
height: 40px;
line-height: 40px;
}
В данном примере высота явно указана и для ul, так как я сделал меню горизонтальным с помощью указания float:left для li. В вертикальном меню указание высоты нужно только для контейнера текста, то есть только li.
21/04/2007 в 1:40 пп
Или давать padding в em’ах. Тоже хорошо работает.
21/04/2007 в 3:45 пп
Считать тяжелее, и будут дополнительные траблы если использовать сложные бэкграунды.
23/04/2007 в 2:59 пп
“Фишка” с vertical-align: middle все-таки работает в семантической верске. Так как таблицы тоже ее часть, если используются по назначению. Я переписал бы начало, а в остальном вроде хороший материал.
Кстати, пытался запостить сюда коммент с мобилы (Нокия, Симбиан, Опера-мини). Безуспешно. Сказало: нет такой страницы
25/04/2007 в 12:32 дп
< uggallery
Дельное замечание. Как то я упустил этот момент
Исправил.
Хм, надо будет попробовать.
15/08/2007 в 5:45 пп
Нашел поздно, сам над этим бился
Кстати, у меня все работает для вертикального списка просто с line-height=40px, без height в li.
9/11/2007 в 9:33 пп
Спасибо большое! Долго над этим думал, как сделать по стандартам =)