發佈日期: 發佈留言

Footer 置底的幾種作法

footer 要如何保持在底部呢? 來看看!

Footer 置底

頁面最底下定義:

  • Footer 貼合底部、不隨視窗移動

這篇舉例的命名說明:

  • 包內容區塊:wrapper
  • 內容區塊:content
  • 底部區塊:footer
<div class="wrapper">
  <div class="content">
    <h1>content</h1>
  </div>
</div>
<footer>
  <h1>footer</h1>
</footer>

flex

用 flex-grow,將到 footer 之上的空間佔滿

html, body {
  height: 100%;
  margin: 0;
}
body {
  display: flex;
  flex-direction: column;
}
.wrapper {
  flex-grow: 1;
  background-color: beige;
}
footer {
  background-color: #d9d996;
}
  • html, body 設定 height: 100% ,最外層高度讓他彈性最高可以100%。
  • body
    • display: flex ,使物件依序排列。
    • flex-direction: column ,使物件垂直排列。
  • 包內容區塊 wrapper
    • flex-grow: 1 ,將剩餘的空間佔滿

grid

排版的方式將 footer 置底

html {
  height: 100%;
}
body {
  min-height: 100%;
  margin: 0;
  display: grid;
  grid-template-rows: 1fr auto;
}
footer {
  grid-row-start: 2;
  grid-row-end: 3;
  background-color: #d9d996;
}
  • html 設定 height: 100% ,最外層高度讓他彈性最高可以100%。
  • body
    • display: grid,使內容物件可排版。
    • grid-template-rows: 1fr auto ,將 footer 之上設置為一個欄位,footer 部分設為自動高度。
  • 底部區塊 footer
    • grid-row-start: 2,footer 欄位從第二條橫線開始。
    • grid-row-end: 3 ,footer 欄位從第三條橫線結束。

查看 flex、grid 方式 的 Demo


height

height 100% + 預留 footer 高度 (假設 60px 高):

html, body {
  height: 100%; 
  margin:  0;
}
.wrapper {
  min-height: 100%;
  margin-bottom: -60px;
}
.content {
  padding-bottom: 60px; 
  background-color: beige;
}
footer {
  height: 60px;
  background-color: #d9d996;
}
  • html, body 設定 height: 100% ,最外層高度讓他彈性最高可以100%。
  • 包內容區塊 wrapper
    • min-height: 100% ,包內容區塊高度讓他最低也要能 100%。
    • margin-bottom: -60px , -60px 是留給 footer 的高度空間。
  • 內容區塊 content
    • padding-bottom: 60px ,讓 content 的內容不影響 footer。

footer 就會在最下方囉,但有缺點是 footer 高度有變就都要一起更改。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *