2016-01-13 85 views
0

由於某些原因,最小高度在Firefox上不起作用。我試着在身上設置最小高度,但Firefox完全忽視它。由於我的頁面是動態的,因此我不能將高度設置爲100%。我該怎麼辦?Firefox忽略CSS中的最小高度

body { 
 
border: 1px solid black; 
 
width: 100%; 
 
min-height: 100%; 
 
}
<body> 
 

 
This is the body. 
 

 
</body>

+2

「高度」百分比適用於絕對定位的元素。如果你需要它提供百分比,然後將'position:absolute;'添加到'body'風格 –

+0

@SaqibAmin min-height在谷歌瀏覽器中工作得很好。 – frosty

+0

我只是重新確認了一個空文檔的樣式,你必須添加'position:absolute;'以便按照你想要的方式工作 –

回答

3

height百分數都繼承(即包括min-height and max-height,太)。從CSS規範:

指定用於確定使用的值的百分比。 該百分比是根據生成的包含框的高度來計算的。

大多數人不知道的是,body就像任何其他的元素,所以是html。人們也沒有意識到的是這些元素沒有固有的高度。 html的父項是視口,它的確實具有100%的固有高度。視口是 - 或多或少 - 瀏覽器窗口,減去任何菜單或標題欄。

由於height百分比從他們的父母繼承,你不必爲你的html元素的height一套,你的min-height: 100%; CSS不具有價值,採取100%的。所以你的身體基本上服用0的min-height: 100%

爲了解決這個問題,簡單地告訴你html元至100%的視口的高度:

html { 
 
    height: 100%; /* this is the important bit */ 
 
} 
 

 
body { 
 
    border: 1px solid black; 
 
    width: 100%; 
 
    min-height: 100%; 
 
    margin: 1px; /* I added this to make the border around the body a little easier to see. Normally you want to set it to 0 or leave it alone completely */ 
 
}
<body> 
 
This is the body. 
 
</body>

但是,如果你不希望你的整個文檔設置爲與視口一樣高(我強烈建議您這樣做),您還可以在您的body元素上使用position: absolute;,這樣無論其父元素的高度如何,百分比高度都將始終解析。這是Saqib在上述評論中試圖得到的結果。從CSS規格上最小高度和高度分別爲:

如果未明確指定包含塊的高度(即,它取決於內容的高度),並且該元件沒有絕對定位,該百分比值被視爲'0'('min-height')或'none'('max-height')。

-

注意,絕對定位的元素的包含塊的高度獨立於元件本身的尺寸,並且因此這樣的元件上的百分比高度總是能夠得到解決。

body { 
 
    border: 1px solid black; 
 
    width: 100%; 
 
    min-height: 100%; 
 
    position: absolute; 
 
    margin: 1px; /* I added this to make the border around the body a little easier to see. Normally you want to set it to 0 or leave it alone completely */ 
 
}
<body> 
 
This is the body. 
 
</body>

(我不知道你的代碼是在Chrome中工作,但在你的問題的代碼在Chrome瀏覽器,因爲它不會在Firefox相同的行爲。)