html - 为什么一个单元格中元素的填充会影响另一个单元格?

标签 html css padding

我有一个两列布局。因为并非所有我们想要支持的浏览器都支持 flex 布局,所以我使用了 display: tabledisplay: table-cell

我目前的问题是,如果我修改 #sidebar > div > div 的顶部填充,MAIN 内容会受到影响,但它不应该受到影响。所以有两个问题:

  • 为什么 MAIN 会受到 #sidebar > div > div 顶部填充变化的影响?
  • 我怎样才能做到不受影响?

HTML

<div id="wrapper">
    <div id="sidebar">
        <div class="inner">
            <div>TEST</div>
            <div>TEST</div>
            <div>TEST</div>
            <div>TEST</div>
        </div>
    </div>
    <div id="content">
        <div class="inner">MAIN</div>
    </div>
</div>

CSS

body {
    background: #ecf0f1;
    margin: 0;
    padding: 0;
    font-family: sans-serif;
}
*, *:before, *:after {
    box-sizing: border-box;
}
#wrapper {
    display: table;
}
#sidebar {
    display: table-cell;
    background: #2c3e50;
    color: #ecf0f1;
    width: 200px;
}
#content {
    display: table-cell;
    background: #ecf0f1;
    color: #2c3e50;
}
.inner {
    min-height: 100vh;
    padding: 0px 10px;
}
#sidebar > div > div {
    padding: 5px;
    padding-top: 50px;
    margin: 1px 0;
}

jsFiddle — 只需修改那里的填充。

最佳答案

因为您没有为 MAIN div 指定 vertical-align:top;

#content {
    display: table-cell;
    background: #ecf0f1;
    color: #2c3e50;
    vertical-align:top;
}

jsFiddle example

默认的垂直对齐方式是基线,这是您最终看到的。

关于html - 为什么一个单元格中元素的填充会影响另一个单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23375166/

相关文章:

html - 标题/导航问题

html - 如何在 CSS 中指定表格填充? (表格,不是单元格填充)

html - 如何删除单词后的 4 像素填充?

php - 在 php 中从 header 中包含 css

html - 如何动态使用滚动功能数据来自页脚

javascript - 如何从表单中选择操作页面,然后将值提交到该页面 HTML、PHP、Javascript

php - 如何使 openssl_encrypt 将输入填充到所需的 block 大小?

jquery - IE 用户无法填写我的搜索输入字段

css - 如何让文本在 100% 宽的 div 上保持原位?

jquery - 使用媒体查询使 slider 响应