html - 将 div 的高度指定为容器的 100% 减去同级 div 的高度

标签 html css

我在下面的布局中有一个 div

<html style="height:100%">
<body style="height:100%">
    <div id="divBody" style="height:100%;width:1000px">
        <div id="divHeader" style="height:30px"></div>
        <div id="divContent" style="height:100%">
            <div id="divLeft" style="height:100%; float:left; width:200px; border-left:1px solid black"></div>
            <div id="divRight" style="width:800px"></div>
        </div>
    <div>
</body>
</html>

我的问题是 divContent 的高度如何达到主体的 100%。我需要它做的是占据 divBody 的整个高度减去 divHeader 的高度。所以我将 divContent 的高度设置为自动:

<html style="height:100%">
<body style="height:100%">
    <div id="divBody" style="height:100%;width:1000px">
        <div id="divHeader" style="height:30px"></div>
        <div id="divContent" style="height:auto">
            <div id="divLeft" style="height:100%; float:left; width:200px; border-left:1px solid black"></div>
            <div id="divRight" style="width:800px"></div>
        </div>
    <div>
</body>
</html>

现在 divContent 的高度是正确的,它是 divBody 的 100% 减去 divHeader 的高度,但是现在 divLeft 的高度没有填满它的父级 (divContent) 的 100%。我怎样才能在这里两全其美?

最佳答案

因为您知道 #divHeader 的高度是 30px,所以您问题的简单答案是在 #divContent 上使用 calc() > 像这样:

#divContent {
  height: calc(100% - 30px);
}

困难的部分是当其他 sibling 的高度未知或动态时,像 #divContent 一样设置 sibling 的高度。那时CSS Flex派上用场:

.flex {
  display: flex;
  flex-direction: column;
  height: 100vh;
}

.top {
  flex-shrink: 0;
}

.bottom {
  height: 100%;
}

bottom 类的元素将使用 100% 高度减去其兄弟元素的高度。 flex-shrink: 0 规则很重要,主要用于 iOS 设备,以避免在同级设备上收缩。

Working example on Codepen here .

关于html - 将 div 的高度指定为容器的 100% 减去同级 div 的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10609531/

相关文章:

html - Sencha Touch/Cordova 应用程序在 HTC One 的 Android Level 18 Jellybean 4.3 更新后崩溃

javascript - kendo ui 调度程序触发错误事件

JavaScript 使用一个链接打开两个网页

html - 如何将子文本置于 Flexbox 框的左边缘中心?

css - 使用上下文菜单隐藏和显示 'ng-repeat' 表行

html - 有什么简单的方法可以将按钮和标题一起放置在 Flask 应用程序的网页中心垂直对齐?

html - 为什么这个页面的背景不是黑色的?

html - 如何消除导航栏图像之间的间隙?

css - 在动态选项对象上删除 Angular 上的空白选项

html - 需要一些简单的样式更改