文主要介紹一個Footer元素如何粘住底部,使其無論內容多或者少,Footer元素始終緊靠在瀏覽器的底部。我們知道,當內容足夠多可以撐開底部到達瀏覽器的底部,如果內容不夠多,不足以撐開元素到達瀏覽器的底部時,下面要講的布局就是解決如何使元素粘住瀏覽器底部。
方法一:全局增加一個負值下邊距等於底部高度
有一個全局的元素包含除了底部之外的所有內容。它有一個負值下邊距等於底部的高度,
HTML代碼 <body> <div class="wrapper"> content <div class="push"></div> </div> <footer class="footer"></footer> </body>
CSS代碼:
html, body { height: 100%; margin: 0; } .wrapper { min-height: 100%; /* Equal to height of footer */ /* But also accounting for potential margin-bottom of last child */ margin-bottom: -50px; } .footer, .push { height: 50px; }
這個代碼需要一個額外的元素.push等於底部的高度,來防止內容覆蓋到底部的元素。這個push元素是智能的,它並沒有占用到底部的利用,而是通過全局加了一個負邊距來填充。
方法二:底部元素增加負值上邊距
雖然這個代碼減少了一個.push的元素,但還是需要增加多一層的元素包裹內容,並給他一個內邊距使其等於底部的高度,防止內容覆蓋到底部的內容。
HTML代碼:·
<body> <div class="content"> <div class="content-inside"> content </div> </div> <footer class="footer"></footer> </body>
CSS:
//code from http://caibaojian.com/css-5-ways-sticky-footer.html html, body { height: 100%; margin: 0; } .content { min-height: 100%; } .content-inside { padding: 20px; padding-bottom: 50px; } .footer { height: 50px; margin-top: -50px; }
方法三:使用calc()計算內容的高度
HTML
<body> <div class="content"> content </div> <footer class="footer"></footer> </body>
CSS:·
//code from http://caibaojian.com/css-5-ways-sticky-footer.html .content { min-height: calc(100vh - 70px); } .footer { height: 50px; } //給70px而不是50px是為了為了跟底部隔開20px,防止緊靠在一起。
方法四:使用flex布局方式
HTML:·
<body> <div class="content"> content </div> <footer class="footer"></footer> </body>
CSS:
//code from http://caibaojian.com/css-5-ways-sticky-footer.html html { height: 100%; } body { min-height: 100%; display: flex; flex-direction: column; } .content { flex: 1; }
針對一樓的評論,我再加一個例子
<header>
<h1>Site name</h1>
</header>
<div class="main">
<p>Bacon Ipsum dolor sit amet...</p>
<p>Bacon Ipsum dolor sit amet...</p>
<p>Bacon Ipsum dolor sit amet...</p>
<p>Bacon Ipsum dolor sit amet...</p>
</div>
<footer>
<p>© 2017 No rights reserved.</p>
<p>Made with ♥ by an anonymous pastafarian.</p>
</footer>
css代碼
body{display: flex; flex-flow: column; min-height: 100vh; overflow:auto;}
h1{font-size: 60px; text-align: center;}
p{font-size: 24px; text-align: center;}
.main{flex:1;}
<轉 https://blog.csdn.net/swimming_in_it_/article/details/83865321>
