我在查看一些列表示例时注意到一个我无法解释的示例。这是我正在查看的网站http://css.maxdesign.com.au/listamatic/horizontal05.htm这是其中的代码:
<div id="navcontainer">
<ul id="navlist">
<li id="active"><a href="#" id="current">Item one</a></li>
<li><a href="#">Item two</a></li>
<li><a href="#">Item three</a></li>
<li><a href="#">Item four</a></li>
<li><a href="#">Item five</a></li>
</ul>
</div>
#navlist {
padding: 3px 0;
margin-left: 0;
border-bottom: 1px solid #778;
font: bold 12px Verdana, sans-serif;
}
#navlist li {
list-style: none;
margin: 0;
display: inline;
}
#navlist li a {
padding: 3px 0.5em;
margin-left: 3px;
border: 1px solid #778;
border-bottom: none;
background: #DDE;
text-decoration: none;
}
#navlist li a:link {
color: #448;
}
#navlist li a:visited {
color: #667;
}
#navlist li a:hover {
color: #000;
background: #AAE;
border-color: #227;
}
#navlist li a#current {
background: white;
border-bottom: 1px solid white;
}
我没有得到的是父 #navlist 元素的填充被设置为 3px,而列表项仍然直接位于其边框,就像它的填充为 0px 一样。当我设置以下内容时:
#navlist {
padding: 0;
}
列表项的边框位于#navlist 元素的边框下方。为什么会这样,不应该比 #navlist 边框高 1 像素吗?我找不到解释此行为的规则?
最佳答案
垂直内边距在内联元素上的工作方式有所不同。考虑这个例子:
青色区域代表父元素,而黄色区域代表带有填充的 block /内联元素。请注意,内联元素的顶部和底部内边距不会影响父元素的高度;如果需要,它会在父级之外呈现。
现在这里是 Eric Meyer 的选项卡式导航栏示例的分割:
- 有一个垂直内边距为 3px 的列表
- 此列表包含一个 14 像素高的行框,其中包含内嵌列表项
- 列表项包含具有 3 像素垂直内边距的链接(此内边距使选项卡按钮显得更宽、更高、更好)
如上所述,垂直内边距不会向下移动行框,相反,内边距会在有意添加的 3 像素内边距之上绘制到行框之外。结果是像素完美的选项卡菜单。
关于css - 子边框低于父边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25472856/