css - 子边框低于父边框

标签 css inline padding parent

我在查看一些列表示例时注意到一个我无法解释的示例。这是我正在查看的网站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 像素吗?我找不到解释此行为的规则?

最佳答案

垂直内边距在内联元素上的工作方式有所不同。考虑这个例子:

Padding Demo

青色区域代表父元素,而黄色区域代表带有填充的 block /内联元素。请注意,内联元素的顶部和底部内边距不会影响父元素的高度;如果需要,它会在父级之外呈现。

现在这里是 Eric Meyer 的选项卡式导航栏示例的分割:

  • 有一个垂直内边距为 3px 的列表
  • 此列表包含一个 14 像素高的行框,其中包含内嵌列表项
  • 列表项包含具有 3 像素垂直内边距的链接(此内边距使选项卡按钮显得更宽、更高、更好)

如上所述,垂直内边距不会向下移动行框,相反,内边距会在有意添加的 3 像素内边距之上绘制到行框之外。结果是像素完美的选项卡菜单。

关于css - 子边框低于父边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25472856/

相关文章:

html - CSS:填充行为的疑问

C++ 内联函数 : declare as such, 是这样定义的,还是两者都定义?为什么?

c++ - 将参数传递给方法时内联初始化整数数组

c++ - 内联函数的概念是什么以及它与宏有何不同?

html - 无法将边框与图像内部的文本居中

ios - 尝试隐藏选项卡栏 SwiftUI 时出现问题

css - div之间的间距

html - 如何使用CSS3 Transition自定义页面滚动

html - 如何将div内容设置到其父div的底部?

javascript - jQuery .height() 没有改变