2016-04-15 102 views
2

這裏是我的HTML:如何獲得高度:100%div的高度:auto div?

<div id="container"> 
    <div id="red"></div> 
    <div id="yellow"> 
     <div id="green"></div> 
    </div> 
</div> 

這裏是我的CSS:

#container { height:auto; width:100%; background:orange; float:left; } 
#red  { height:100%; width:200px; background:red; float:left; position:relative; } 
#yellow { height:100%; width:calc(100% - 210px); background:yellow; float:right; position:relative; padding:5px; } 
#green  { height:300px; width:100%; background:green; } 

這裏有一個例子:https://jsfiddle.net/cc5xL660/

因爲它是在的jsfiddle的#reddiv是看不見的。我正在尋找一種方法來使#reddiv可見,而沒有一個特定的height維度。當然,我可以給一個height:300px#reddiv但是#green div應該是動態的。我希望#red div具有相同的高度。

+0

我不認爲這是可能的具體使用HTML/CSS此解決方案。 %屬性強制子元素達到父母高度,但高度必須預先定義。 – ARLCode

回答

1

您可以使用display:flex做到這一點。看看here

#container { 
 
    height: auto; 
 
    width: 100%; 
 
    background: orange; 
 
    float: left; 
 
    display:flex; 
 
    flex-direction:row; 
 
    align-items:stretch; 
 
} 
 

 
#red { 
 
    /*height: 100%;*/ 
 
    width: 200px; 
 
    background: red; 
 
    float: left; 
 
    position: relative; 
 
} 
 

 
#yellow { 
 
    /*height: 100%; 
 
    width: calc(100% - 210px);*/ 
 
    background: yellow; 
 
    float: right; 
 
    position: relative; 
 
    padding: 5px; 
 
    flex:1 0; 
 
} 
 

 
#green { 
 
    height: 300px; 
 
    width: 100%; 
 
    background: green; 
 
}
<div id="container"> 
 

 
    <div id="red"></div> 
 

 
    <div id="yellow"> 
 

 
    <div id="green"></div> 
 

 
    </div> 
 

 
</div>

Fiddle

+0

你的解決方案工作得很好,但它比另一個更復雜。無論如何,我投了你的答案,謝謝。 – Guillaume

+1

嘗試瞭解flex。這是未來。 –

+1

是的。對於新的CSS學習者來說這很複雜,你選擇的答案顯然是最好的,更容易和跨瀏覽器兼容的。但是'flex'實現起來要容易得多,而且一旦您瞭解它並且它日益變得越來越多的瀏覽器兼容,就不需要太多的努力來創建更復雜的設計。所以我建議你看看它,如果你有興趣。 – Roy