2016-03-09 23 views
3

我在Flexbox子项中有一个CSS表格。该表的height设置为100%,但它不起作用。CSS高度:100%无法在Flexbox中的表格中使用子项

您可以在Codepen中看到绿箱只能水平拉伸,但不能垂直拉伸。我看过the similar question。但是,一旦我将一个CSS表放置在Flexbox子中,它也停止工作。

有趣的是,这个问题影响到Chrome,但不是IE11。

CodePen

HTML:

<div class="flex-box"> 
    <div class="flex-child"> 
    <div class="wrapper"> 
     <div class="table"> 
     <div class="table-cell"> 
      Hello 
     </div> 
     </div> 
    </div> 
    </div> 
</div> 

CSS:

.flex-box { 
    width: 500px; 
    height: 500px; 
    background-color: lightblue; 
    display: flex; 
} 

.flex-child { 
    flex-grow: 1; 
} 

.wrapper { 
    width: 100%; 
    height: 100%; 
    background-color: yellow; 
} 

.table { 
    height: 100%; 
    width: 100%; 
} 

.table-cell { 
    height: 100%; 
    width: 100%; 
    background-color: green; 
    text-align: center; 
} 

回答

1

你缺少父元素上height声明。

试试这个:

.flex-child { 
    flex-grow: 1; 
    height: 100%; /* NEW */ 
} 

Revised Codepen

当谈到在Flexbox的渲染百分比的高度,有浏览器之间的行为差​​异。特别是Firefox/IE与Chrome/Safari/Opera。详细信息请参考这个帖子:

此外,作为一般的CSS规则,为百分比高度的子元素上工作,height属性必须在父定义。更多细节在这里:

+0

@Michael_B您好,感谢!然而,这工作,我真正的用例涉及至少两个flexbox子。问题是如果他们两个都有'height:100%',那么它会增加两次整体高度。如果容器的高度为200px,那么它将变为400px。请参阅http://codepen.io/anon/pen/yOJyOY。 好的,我可以将高度降低到50%。但是当我将'flex-direction'切换到'row'时,我试图使它更灵活。如果我用'height:50%'来做到这一点,那么它不会占据父元素的整个高度。 –

+0

根据屏幕大小,您可以使用媒体查询来调整“flex-direction”和“height”。这里有一个修改后的codepen(效果为widen/narrow浏览器窗口):http://codepen.io/anon/pen/zqWKav?editors=1100 –