我正在研究基于UL的简单水平导航。我想要的是可点击区域与每个LI的高度和宽度相匹配。我已经尝试了很多关于这个主题的变化,但这是关于下面显示的最快乐的折衷方案,当文本在中间对齐时,我在每个LI中获得大约一半的区域可以被点击。感谢您的任何意见。
body {
background-color: #ffaa00;
}
#main {
width: 1200px;
height: 890px;
margin: 0 auto;
}
#content {
width: 100%;
height: 100%;
border: 1px solid #000;
background-color: #fff;
margin: 0;
padding: 0;
}
#nav {
height: 50px;
width: 100%;
background-color: #ccc;
}
ul {
margin-top: 0;
padding-left: 0;
list-style-type: none;
}
li {
display: table-cell;
height: 50px;
width: 190px;
vertical-align: middle;
text-align: center;
}
li:hover {
background-color: #999;
border-radius: 6px;
}
a {
display: inline-block;
height: 25px;
width: 190px;
}

<div id="main">
<div id="content">
<div id="nav">
<ul>
<li><a href="#a">Link</a>
</li>
<li><a href="#b">Link</a>
</li>
<li><a href="#c">Link</a>
</li>
<li><a href="#d">Link</a>
</li>
<li><a href="#e">Link</a>
</li>
<li><a href="#f">Link</a>
</li>
</ul>
</div>
</div>
</div>
&#13;
答案 0 :(得分:1)
您必须将height
更改为100%
并使用:before至vertical-align文字中间。
body {
background-color: #ffaa00;
}
#main {
width: 1200px;
height: 890px;
margin: 0 auto;
}
#content {
width: 100%;
height: 100%;
border: 1px solid #000;
background-color: #fff;
margin: 0;
padding: 0;
}
#nav {
height: 50px;
width: 100%;
background-color: #ccc;
}
ul {
margin-top: 0;
padding-left: 0;
list-style-type: none;
}
li {
display: table-cell;
height: 50px;
width: 190px;
vertical-align: middle;
text-align: center;
}
li:hover {
background-color: #999;
border-radius: 6px;
}
a {
display: inline-block;
height: 100%;
width: 190px;
}
a:before {
content: '';
display: inline-block;
height: 100%;
vertical-align: middle;
}
&#13;
<div id="main">
<div id="content">
<div id="nav">
<ul>
<li><a href="#a">Link</a>
</li>
<li><a href="#b">Link</a>
</li>
<li><a href="#c">Link</a>
</li>
<li><a href="#d">Link</a>
</li>
<li><a href="#e">Link</a>
</li>
<li><a href="#f">Link</a>
</li>
</ul>
</div>
</div>
</div>
&#13;