Вертикальное выравнивание в горизонтальном меню

master_jeday
На сайте с 15.05.2010
Offline
231
5294

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

Вот так оно выглядит в html:


<div id="top_nav">
<li id="main"></li>
<li><a href="#">Многобукаф букафмного</a></li>
<li><a href="#">Тут поменьше</a></li>
<li><a href="#">Тыщ</a></li>
<li><a href="#">Ещё немного</a></li>
<li><a href="#">А вот здесь очень много</a></li>
</div>

А вот такой к нему css:


#top_nav {
margin: 17px 0 0 2px;
position: inherit;

}

#top_nav li {
display: inline;
float: left;
list-style: none;
font-family: Tahoma;
font-size: 16px;
color: #669933;
text-align: center;
font-weight: 900;
}

#top_nav li a {
display: block;
width: 150px;
height: 57px;
color: #669933;
background: url(img/topnav_bg.png);
text-decoration: none;
}

#top_nav li a:hover,active {
display: block;
width: 150px;
height: 57px;
color: #669933;
background: url(img/topnav_bgactive.png);
text-decoration: none;
}

#main {
background: url(img/main_active.png);
width: 51px;
height: 57px;
}

#main - это отдельно оформленный пункт, соответственно, к нему отдельный id.

Собственно, всё выглядит нормально, за исключением "прилипшего" к верхнему краю блоков текста. Можно сверстать таблицами и задать text-align: middle. Но меню в таблицах никак не катит. :( Думаю, можно через padding попробовать, но как-то не получается. Проблема осложняется тем, что в некоторых пунктах меню букаф многа, и текст - в 2 строки, что, в принципе, и требуется, однако с выравниванием по центру, по вертикали.

ЗЫ. Может, ещё какие-то ошибки есть? Я не шибко матёрый верстальщик. :D

Дорвеи на заказ с гарантией трафика ( /ru/forum/993918 ) >>> Осторожно, в телеге/скайпе есть клоны! Проверяйте, что общаетесь именно со мной через личку!
opaHzheBb1u
На сайте с 26.05.2006
Offline
168
#1

Для #top_nav li a

Можно использовать

display: table-cell;

vertical-align: middle;

Только в Ие плоховато работает

opaHzheBb1u добавил 04.07.2011 в 05:32

Точнее не плоховато, а не во всех =)

в 6 и 7 не работает.

master_jeday
На сайте с 15.05.2010
Offline
231
#2

opaHzheBb1u, благодарю! Теперь всё корректно отображается. :) В ИЕ 9 работает, а остальным и нефиг, пускай юзеры обновляются (задолбали уже :D).

ЗЫ. Погуглил этот элемент, и нашёл такое решение, как раз для ИЕ 6-7: fortress-design.com/css-vertical-alignment-text

Olldman
На сайте с 21.04.2010
Offline
79
#3

Только не забудьте, что элемент <li> является элементом списка - <ul>, а не <div>. Ну и вертикально выравнять проще указав высоту строки - line-height

master_jeday
На сайте с 15.05.2010
Offline
231
#4
Olldman:
Только не забудьте, что элемент <li> является элементом списка - <ul>, а не <div>.

О, а я и не заметил. Спасибо. :)

Olldman:
Ну и вертикально выравнять проще указав высоту строки - line-height

Ну, у меня в одних блоках текста на одну строчку, в других - на две. Так что, как я понимаю, не вариант.

ЗЫ. Если что-то ещё неправильного в сей абракадабре заметите, пишите. ;)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий