我有一个像这样的简单菜单:
<ul class="menu">
<li>
<a href="">Home</a>
</li>
<li>
<a href="">Products</a>
</li>
<li>
<a href="">Contact</a>
</li>
</ul>
无序列表的列表元素浮动到左侧并具有固定的height
:
ul.menu li {
float: left;
height: 50px;
list-style: none;
padding: 0 10px;
background-color: yellow;
}
现在我想将列表元素中的锚点垂直居中。
最好的方法是什么?
答案 0 :(得分:4)
要垂直居中文本,请将line-height
设置为与元素高度相同的值。看到你有一个设定的高度,这将没有问题:
.menu li a {
line-height: 50px;
}
答案 1 :(得分:2)
添加行高等于高度:
.menu li {
float: left;
height: 50px;
**line-height: 50px;**
padding: 0 10px;
list-style: none;
background-color: yellow;
}
答案 2 :(得分:0)
.menu li {
float: left;
height: 50px;
padding: 0 10px;
list-style: none;
background-color: yellow;
text-align: center;
min-width: 100px;
}
.menu li a
{
line-height: 50px;
}
答案 3 :(得分:0)
问题在于.menu li
类。您已声明float
向左移动,但为了使其vertically-aligned
,您必须移除float
并应用display:table-cell;
才能获得vertical-alignment
1}}工作。
对于实例,
.menu li {
/*float: left;*/
display:table-cell;
vertical-align:middle;
height: 50px;
padding: 0 10px;
list-style: none;
background-color: yellow;
}
希望这有帮助。
答案 4 :(得分:0)
您可以使用line-height
来控制垂直对齐,但这只能在每个列表项中可靠地工作,如果它们都限制在一行中。
实现这一目标的最可靠方法是移除浮子和放大器。将列表项显示为CSS table-cell
:
.menu {
display: table;
}
.menu li {
height: 50px;
padding: 0 10px;
list-style: none;
background-color: yellow;
display: table-cell;
vertical-align: middle;
}
.menu li a {
display: block;
}
这样,如果其中一个链接掉到两条线上,它仍然是垂直居中的,如下所示:
答案 5 :(得分:0)
除了float和table-cell之外,你还可以使用inline-block:
.menu li {
display: inline-block;
line-height: 50px;
padding: 0 10px;
list-style: none;
background-color: yellow;
}
.menu li a {
vertical-align: middle;
}
与其他帖子类似,我在line-height: 50px
上设置.menu li
,在vertical-align: middle
元素设置a
。您可以在此示例中省略高度。