退房this fiddle,希望我沒有誤解你的問題。那裏的JS可以忽略,只有CSS和HTML是相關的。
我見過很多人問這個問題,我有太在一個點上,所以我想我會在這裏發表一個全面的答案:)無論如何,解釋:
的HTML:
<div class="wrapper">
<button id="add-content">Add more content</button>
<ul class="content">
<li>I am content, destroyer of worlds</li>
<li>I am content, destroyer of worlds</li>
<li>I am content, destroyer of worlds</li>
<li>I am content, destroyer of worlds</li>
<li>I am content, destroyer of worlds</li>
</ul>
<footer>
Footer!
</footer>
</div>
而CSS:
body,
html {
padding: 0;
margin: 0;
height: 100%;
}
.wrapper {
min-height: 100%;
position: relative;
box-sizing: border-box;
padding-bottom: 100px;
}
footer {
height: 100px;
background: rgba(0, 0, 0, 0.2);
position: absolute;
width: 100%;
bottom: 0;
}
所以,內容&頁腳在其周圍的包裝,因爲這是大多數人如何滾動,但它不是必需的,你實際上可以使用body
作爲包裝。
現在,關鍵點需要注意:
html, body
有height: 100%
:塊元素的高度,默認情況下,決定通過它的內容。因此,即使您嘗試將頁腳定位在底部,使用position: absolute; bottom: 0
,它實際上也會被推到的第一個非靜態父元素的底部,或者如果沒有非靜態父元素,則底部html/body
元素。通過設置height: 100%
,我們可以強制body, html
元素佔用整個可用視口並忽略內容高度。(您也可以使用min-height: 100%;
,但要看哪些瀏覽器要支持)
.wrapper
有min-height: 100%
:粘元素,你想粘頁腳元素之間,你要確保所有元素有100%的高度,否則他們會崩潰以匹配內容的高度。
.wrapper
有box-sizing: border-box; padding-bottom: 100px;
:在底部填充是確保如果內容被添加到包裝,它不會落得迷路背後粘頁腳。此填充應匹配頁腳高度,或更大。
footer
有position: absolute; bottom: 0;
:沒有解釋需要在這裏,我猜。下一點實際上更重要。
.wrapper
有position: relative
:還記得我說的關於非靜態父母?通過使.wrapper
非靜態,我們確保footer
在.wrapper
內保持,同時保持粘性。
我認爲,包括它,但我建議,在小提琴的有關HTML/CSS玩弄得到什麼事情有清楚的認識,以及如何元素進行交互。
P.S.:在通過你的小提琴時,我注意到有一個.wrapper
類,但沒有元素?我建議添加到小提琴(並刪除頁腳內容),它會更容易追查什麼是缺少:)
P.P.S.:退房this fiddle branched from yours,我已經刪除所有不必要的HTML內容後作出以下修改:
- 新增.wrapper元素周圍所有的主體內容,除了頁腳。
- 在.wrapper元素底部添加.push元素
- 從頁腳中刪除了一堆不必要的CSS樣式,將定位更改爲相對。
不要發佈所有的代碼,只是與你的頁腳相關的代碼和發生了什麼問題,但是,你應該一定要發佈代碼,甚至更好,也發佈jsFiddle。 – Aeolingamenfel
我不知道什麼是jsFiddle。 – Levant
http://jsfiddle.net/是一個網站,可讓您與其他人分享您的代碼,並讓他們輕鬆使用它 –