#html #css #vertical-alignment
#HTML #css #выравнивание по вертикали
Вопрос:
У меня есть следующий фрагмент HTML:
<ul id="downmenu">
<li class="copyright">
<div>amp;copy; 2011. All rights reserved.</div>
</li>
<li class="twitter">
<img src="images/twitter.png" alt="" />
</li>
<li class="facebook">
<img src="images/facebook.png" alt="" />
</li>
</ul>
И следующий фрагмент CSS:
#downmenu {
font-size:14px;
border-top: 1px solid #666;
clear: both;
list-style-type: none;
margin: 20px 0;
overflow: hidden;
padding: 11px 0 11px 34px;
width: 870px;
}
#downmenu li {
float:left;
}
#downmenu li.copyright {
margin-right:540px;
height:36px;
}
#downmenu li.copyright div{
margin: auto 0;
}
(Я думаю) #downmenu li.copyright
имеет высоту 36 пикселей, и я хочу центрировать вертикально div
внутри него. Для достижения этого я использовал margin: auto 0;
. Но он не центрирован.
Есть какие-нибудь подсказки?
Комментарии:
1. Центрирование по вертикали немного сложно, взгляните на это: jakpsatweb.cz/css/css-vertical-center-solution.html
Ответ №1:
Полностью удалите div и используйте высоту строки для центрирования текста.
Установка высоты строки равной высоте li
будет центрировать ее по вертикали.
#downmenu li.copyright {
margin-right:540px;
height:36px;
line-height:36px;
}
Ответ №2:
Попробуйте это:
#downmenu li.copyright {
margin-right:540px;
height:36px;
display: table-cell;
vertical-align: middle;
}
Комментарии:
1. Спасибо за ваш ответ, но я получаю то же самое.
2. Может быть, попробуйте изменить
div
на встроенный элемент, такой как aspan
.
Ответ №3:
Вам нужно, чтобы высота строки была такой же, как высота li.
высота: 36 пикселей; высота строки: 36 пикселей;
Я вижу, что у вас есть отступы, это может изменить то, как вы видите div. Используйте что-то вроде Chrome Developer Console или firebug, чтобы увидеть, как применяется ваш CSS.