我试图在html + css中创建水平菜单,但我对菜单元素的垂直对齐有问题。你知道如何以我的链接为中心吗? 这是代码: HTML:
<div id="navigation">
<div class="nav"><a href="#">Link<br>1</a></div>
<div class="nav"><a href="#">Link2</a></div>
<div class="nav"><a href="#">Link3</a></div>
<div class="nav"><a href="#">Link4</a></div>
</div>
CSS:
#navigation
{
float: left;
width: 100%;
background: #cccccc;
text-align:center;
box-shadow: 0 3px 2px #555555;
height:100px;
vertical-align:middle;
padding:0
}
.nav
{
display:inline-block;
width: 120px;
height:100%;
padding:0;
text-align:center;
font-size:20px;
vertical-align:middle;
margin:0;
}
.nav a
{
color:#333333;
text-decoration: none;
display:inline-block;
}
看起来像这样:1
答案 0 :(得分:0)
将line-height
添加到.nav
并删除vertical-align
。
.nav
{
display:inline-block;
width: 120px;
line-height: 100px;
height:100%;
padding:0;
text-align:center;
font-size:20px;
vertical-align:middle;
margin:0;
}
答案 1 :(得分:0)
这是一种使文本标签垂直居中而不指定line-height为包含元素高度的方法。
将display: table-cell
应用于链接(.nav a
)并继承高度值
首先进入.nav
然后进入.nav a
。对于表格单元格,vertical-align属性将按预期使文本居中。这种方法的优点是,如果标签跨越两条线,则文本仍然是垂直居中的。
结果是a
具有更大的活动区域并且表现得更像a
按钮。某些设计可能是一个理想的特征。
当然,你的标签是单个单词(仅一行文字)然后是 行高技巧可能是一个不错的选择。
#navigation {
float: left;
width: 100%;
background: #cccccc;
text-align: center;
box-shadow: 0 3px 2px #555555;
height: 100px;
padding: 0
}
.nav {
display: inline-block;
width: 120px;
height: inherit;
padding: 0;
text-align: center;
font-size: 20px;
margin: 0;
border: 1px dashed blue;
}
.nav a {
color: #333333;
text-decoration: none;
display: table-cell;
vertical-align: middle;
border: 1px dotted blue;
height: inherit;
width: inherit;
}
&#13;
<div id="navigation">
<div class="nav"><a href="#">Link1<br>sub-text</a></div>
<div class="nav"><a href="#">Link2</a></div>
<div class="nav"><a href="#">Link3</a></div>
<div class="nav"><a href="#">Link4</a></div>
</div>
&#13;