我不知道为什么li标签比代码如下的标签高1px 小提琴http://jsfiddle.net/9Wy8z/
#nav {
width: 100%;
background-color: #5A9AFF;
}
#nav > #nav_container > ul{
margin: 0;
padding: 0;
list-style: none;
}
#nav > #nav_container > ul > li {
display: inline-block;
padding: 10px 0;
}
#nav > #nav_container > ul > li > a {
padding: 10px;
text-decoration: none;
color: #1b1b1b;
}
#nav > #nav_container > ul > li > a:hover {
background-color: #e0e0e0;
}
<div id="nav">
<div id="nav_container">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Home</a></li>
<li><a href="#">Home</a></li>
<li><a href="#">Home</a></li>
</ul>
</div>
</div>
这导致a标签为38px和li 39px,我不确定为什么会这样?
答案 0 :(得分:3)
这是因为a
元素默认为inline
。这就是为什么您必须向li
元素添加填充的原因; li
取其内容的高度,即inline
(它不会计算填充数)。这种方法的问题是li
元素也有一些固有的填充,并且它不等于你给a
元素的填充。
将a
标记设置为display:block;
并从li
删除填充将通过在a
而不是{block
中显示inline
元素来解决此问题{1}},并使li
仅取a
元素的大小(而不是更多)减去您尝试添加补偿的任何强制填充。
#nav > #nav_container > ul > li {
display: inline-block;
}
#nav > #nav_container > ul > li > a {
padding: 10px;
text-decoration: none;
color: #1b1b1b;
display: block;
}