2016-01-06 87 views
0

基本上,我給父容器的最小高度爲50%,子容器的高度爲50%。我在父容器中放了很多文本,所以它會擴大到60%。我試過的高度:1px技巧。它不起作用。基本上,兒童容器保持在父母的最小高度(即50%)的50%而不是父母的實際身高的50%(例如60%)。具有百分比最小高度的子容器,具有百分比高度的子容器,不起作用

html, 
 
body { 
 
    height: 100%; 
 
} 
 
#parent { 
 
    width: 50%; 
 
    height: 1px; 
 
    min-height: 50%; 
 
    background-color: yellow; 
 
} 
 
#child { 
 
    background-color: red; 
 
    height: 50%; 
 
}
<div id="parent"> 
 
    dsds dsfdsf sdffds sddfsdsds dsfdsf sdffds sddfsdsds dsfdsf sdffds sddfsdsds dsfdsf sdffds sddfsdsds dsfdsf sdffds sddfsdsds dsfdsf sdffds sddfsdsds dsfdsf sdffds sddfsdsds dsfdsf sdffds sddfsdsds dsfdsf sdffds sddfsdsds dsfdsf sdffds sddfsdsds dsfdsf 
 
    sdffds sddfsdsds dsfdsf sdffds sddfsdsds dsfdsf sdffds sddfsdsds dsfdsf sdffds sddfsdsds dsfdsf sdffds sddfsdsds dsfdsf sdffds sddfsdsds dsfdsf sdffds 
 
    <div id="child"> 
 
    Hello World! 
 
    </div> 
 
</div>

編輯:

這方面的一個應用是創建一個被允許時,有一個溢流成長一整頁的div(即最小高度100%)。此整頁div可以包含上述場景中描述的具有百分比高度的子容器(例如非絕對或固定標題)。

+2

因爲你孩子的''孩子'的高度實際上是父母的高度,所以不會顯示爲'50%',否則父母會增長,那麼孩子就不得不長大,永遠如此(或者直到最終的記憶問題 - 'height = 50%*(parentHeight + height)'不可解決,因爲它是_recursive_)。這隻適用於將商品放置在「relative」以外的「位置」,這不是您要查找的內容。這裏的解決方案可能只能是基於javascript的,但是在這種情況下,你的'#child'應該具有0的height。 – somethinghere

回答

0

你不能這麼做,原因很簡單:你的#child實際上是擴展你的父母 - 它是內容的一部分。您可能會注意到,如果您給父母身高爲relative,並且孩子身高爲absolute,則50%確實工作。但那是因爲你的內容已被排除在正常流程之外。

你可以用來證明這種行爲的唯一合乎邏輯的理由是試圖用數學方法解決它。假設我們有p,這是父母身高,e這是除了孩子以外的內容的高度。這使得兒童身高c,或h/2。計算孩子身高的公式將爲此是:

var c = (e + c)/2 

,你解決不了的,因爲它會變成這樣:

var c = (e + (e + (e + (e + ...)/2)/2)/2)/2 

其中,如果...不告訴你,是無法解決的。

如果不從常規流程中斷開並使您的大小相對於可以計算的東西,則無法緩解此問題。

+0

謝謝。但這個方程看起來可以解決嗎? c =(e + c)/ 2 => c = e'。直觀地說,瀏覽器應該平等地增長'e'和'c'直到'e + c'大於父母的最小高度,在這種情況下窗口高度。如果沒有溢出'c + e =窗口高度',否則'c + e>窗口高度'。 –

+0

嗯是的。不好的例子,但基本問題是一樣的。你怎麼知道什麼時候增加到你父母身高的50%?那是無法解決的。當我有機會時,我會修改。此外,越來越高的windowsheight意味着瀏覽器的定位必須改變。 – somethinghere

+0

好的,我想我明白你的觀點。但是,如果瀏覽器選擇滿足條件的最小尺寸,它就不會無限增長,類似於將div應用於內聯元素。 –

相關問題