< The Webmakers Lounge />

Вертикальное выравнивание текста внутри блока

Вертикальное выравнивание текста внутри ячейки таблицы всегда просто. Достаточно использовать 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.

6 комментариев на “Вертикальное выравнивание текста внутри блока”

  1. burkanov сказал:

    Или давать padding в em’ах. Тоже хорошо работает.

  2. neutrino сказал:

    Или давать padding в em’ах. Тоже хорошо работает.

    Считать тяжелее, и будут дополнительные траблы если использовать сложные бэкграунды.

  3. uggallery сказал:

    “Фишка” с vertical-align: middle все-таки работает в семантической верске. Так как таблицы тоже ее часть, если используются по назначению. Я переписал бы начало, а в остальном вроде хороший материал.

    Кстати, пытался запостить сюда коммент с мобилы (Нокия, Симбиан, Опера-мини). Безуспешно. Сказало: нет такой страницы :(

  4. neutrino сказал:

    < uggallery

    Дельное замечание. Как то я упустил этот момент :) Исправил.

    Кстати, пытался запостить сюда коммент с мобилы (Нокия, Симбиан, Опера-мини). Безуспешно. Сказало: нет такой страницы

    Хм, надо будет попробовать.

  5. Stan сказал:

    Нашел поздно, сам над этим бился :) Кстати, у меня все работает для вертикального списка просто с line-height=40px, без height в li.

  6. Александр сказал:

    Спасибо большое! Долго над этим думал, как сделать по стандартам =)

Оставить ответ

Ссылки в тему

Варианты подписки