我一直在諮詢很多關於粘性頁腳的帖子(即使內容很少,頁腳仍然粘在頁面的底部)以及這些變通方法可以做的伎倆,我覺得他們有點混亂,不明白爲什麼簡單的事情不起作用。瞭解html/body height屬性和粘性頁腳(不固定)
這裏是我想要做的事:
<html>
<body>
<header></header>
<main></main>
<footer></footer>
</body>
</html>
和
html {
height: auto;
min-height: 100%
}
body {
height: 100%;
}
main {
height: calc(100% - 50px - 50px); //container's height - (header height + footer height)
}
header, footer {
height: 50px;
}
我有這個代碼的問題是,身體會不尊重height: 100%
財產和只會環繞身體內容而不是擴展到其容器的100%,即html
。
html標記正常工作,其最小高度是視口,如果內容大於視口,將會以height: auto;
擴大。
爲什麼身體不能擴展到html高度的100%?
我試過我的代碼,它完美的作品,如果我設置html的高度像素值,身體將擴大到100%的HTML。但是如果html的高度是auto,它不會擴展。
我不能將html的高度設置爲100%(即使是tho,然後主體將擴大以填充html標籤),因爲當內容低於視口的100%時,html不會展開以包含內容,它只會溢出。
有什麼我失蹤了嗎?我該如何做這項工作?
編輯:
感謝您的所有有見地的答案和意見!
下面是做到這一點的最好方式,我能想出:
html {
height: 100%;
}
body {
height: 100%;
}
main {
min-height: calc(100% - 50px - 50px); //container's height - (header height + footer height)
}
header, footer {
height: 50px;
}
這樣做會使main
內容擴展內容是否大於視時間越長,或停留在頁面如果底部內容比視口短。
由於我的頁眉和頁腳具有相對位置,因此我將它們的高度減去main
的最小高度,以便在沒有內容的情況下頁腳始終適合視口,而不觸發滾動條顯示。
唯一的缺點這種方法是main
將從body
和html
元素溢出(因爲他們height: 100%
是視口的高度,但它不影響頁面會呈現的方式,似乎是工作。
我認爲這裏的問題是'html'元素沒有明確的高度,所以'body'上的'height:100%;'規則沒有值作爲參考。我無法真正解釋爲什麼會發生這種情況的理論,但你可以[看看這裏](http://codepen.io/ZaLiTHkA/pen/oBqPeP)來看看它的行動。 – ZaLiTHkA
這正是發生的情況。但是我無法找到解釋,也沒有解決這個問題。 Myabe使用JQuery動態調整html的高度?我不知道。 – eloism
我會建議不要使用jQuery;這是不必要的開銷,會導致你頭痛的道路。 CSS不僅能爲你處理這個問題。同時請記住,標記結構對這些要點有很大的影響,所以呃韓在這裏的答案應該是你特別感興趣的。 – ZaLiTHkA