有两个孩子的父 div。即使没有显示另一个孩子,也总是让一个孩子填充父母?

Posted

技术标签:

【中文标题】有两个孩子的父 div。即使没有显示另一个孩子,也总是让一个孩子填充父母?【英文标题】:Parent div with two children. Always make one child fill the parent even when other child is not displayed? 【发布时间】:2016-02-19 00:15:43 【问题描述】:

我有一个包含两个孩子的父 div。不会总是显示其中一个孩子。如何让另一个孩子 div 填充父母的高度而不溢出?

我的第一个不总是显示的孩子有一个固定的高度。我尝试让第二个孩子的高度为 100%,如果第一个孩子没有显示,但当它是第二个孩子时溢出。

这是我的问题:

.parent 
    height: 400px;
    width: 400px;
    background: red;
    border: 1px solid black;


.child1 
    height: 30px;
    background: green;


.child2 
    height: 100%;
    background: blue;

http://jsfiddle.net/4fdf8ksy/

【问题讨论】:

【参考方案1】:

您可以使用flexbox layout。

只需将.parent 元素的display 设置为flex 并添加flex-direction: column

Updated Example

.parent 
  height: 400px;
  width: 400px;
  background: red;
  border: 1px solid black;
  display: flex;
  flex-direction: column;

.child1 
  height: 30px;
  background: green;

.child2 
  height: 100%;
  background: blue;
<div class="parent">
  <div class="child1"></div>
  <div class="child2"></div>
</div>

【讨论】:

【参考方案2】:

您可以使用vh 代替%。这意味着高度应该是100%查看帖子设备。

Jsfiddle

.parent 
  height: 400px;
  width: 400px;
  background: red;
  border: 1px solid black;
  display: block;

.child1 
  height: 30px;
  background: green;
  display: none;

.child2 
  height: 100vh;
  background: blue;
<div class="parent">
  <div class="child1"></div>
  <div class="child2"></div>
</div>

【讨论】:

以上是关于有两个孩子的父 div。即使没有显示另一个孩子,也总是让一个孩子填充父母?的主要内容,如果未能解决你的问题,请参考以下文章

从另一个孩子访问孩子的状态?

即使没有孩子,Kendo UI Treeview 也会显示曲折

父 div 的高度为零,即使它有有限高度的孩子

孩子比父母大,最大高度。溢出没有影响

父 div 没有扩展到孩子的高度

获取parentNode(...)孩子的所有孩子