2016-03-09 42 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 –