【问题标题】:Why does the CSS height property not get calculated properly for a div with display:table containing a div with display:caption?为什么不能正确计算带有 display:table 的 div 包含带有 display:caption 的 div 的 CSS 高度属性?
【发布时间】:2014-06-24 16:18:29
【问题描述】:

我无法弄清楚为什么当 display:table-row 应用于 #header div 时 #container div 的高度正确计算为 200 像素,而当 display:table-caption 应用于#header div。

我已经在 Chrome 35 中对此进行了测试

有人知道为什么会这样和/或有简单的解决方法吗? (最好没有 javascript 或添加额外的 div)?

我希望#header div 的高度与它的内容一样小,它的宽度是#container div 的100%,并且#container 完全适合#main div。

jsfiddle:http://jsfiddle.net/2SKY4/

CSS:

#main {
    width: 200px;
    height: 200px;
    background-color:#ff0; 
}
#container {
    background-color: #0f0;
    width: 90%;
    display:table;
    height:100%;
}
#header {
    background-color:#F0F;
    display:table-caption;
}
#splitpanel {
    display:table-row;
    background-color:#0ff;
}
#leftpanel {
    background-color: #f00;
    overflow: scroll;
    display: table-cell;
}
#rightpanel {
    background: #00f;
    overflow: scroll;
    display: table-cell;
}

HTML:

<div id="main">
    <div id="container">
        <div id="header">Header</div>
        <div id="splitpanel">
            <div id="leftpanel"></div>
            <div id="rightpanel"></div>
        </div>
    </div>
</div>

【问题讨论】:

    标签: css


    【解决方案1】:

    我不确定你想要什么。小提琴已经有了你想要的样子。 你最好展示快照并说出你想要的。您正在使用不同类型的“显示”,这也没有多大意义。你能描述一下你想要的快照结构吗?

    【讨论】:

    • 两列属于“表”,它们的下部滚动条从#main div 突出。我希望这些列完全在黄色反应角内。
    • 如果您将#header 的显示属性更改为table-row,它会正确执行此操作,但标题会占用太多垂直空间。这是我被要求修复并在我的工作中修复的错误的最小再现。我希望解决方案非常简单,并且没有 javascript,因为这是在一个已经扩展和增长的页面上,并且已经做了一些邪恶的魔法。我想让它更简单,而不是更复杂。 ;-)
    • 您的结构不正确是造成问题的原因。我不知道您应用的所有 CSS 样式的重要性,而且其中很多看起来毫无用处。当您不了解它们的作用时,您可以在不使用此类 css 样式的情况下创建所需的结构。
    • 现在,它不起作用,因为您的标题占用了一些宽度,而您的拆分面板正试图占用 100% 的宽度。由于标题是标题,因此它不会被视为占用表格总高度份额的元素,并且拆分面板会尝试占用 100%(200px) 从而使其溢出。将此视为浏览器的常见行为并根据您的需要修改您的结构。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    • 2017-09-14
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 2020-06-26
    • 2015-06-21
    相关资源
    最近更新 更多