首頁  >  文章  >  web前端  >  stricky footer的解決方法小結

stricky footer的解決方法小結

小云云
小云云原創
2018-02-07 09:16:511837瀏覽

stricky footer設計是最古老和最常見的效果之一,我們都曾經歷過如果頁面內容不夠長的時候,頁腳塊粘貼在底部;如果內容足夠長時,頁腳塊會被內容向下推送。本文主要跟大家介紹stricky footer的三種解決方案詳解的相關資料,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧,希望能幫助大家。

這些天做vue+express實戰的練習,跟著黃軼事老師倒是認識了stricky footer,就認真的了解學習了一下,但是前兩天的問題,今天幾種解決方案的詳細情況竟然有些模糊,所以還是記錄下來吧!求學之路就是這樣,不斷地累積和重複。

上圖底部的x 就用到了經典的stricky footer,單頁內容足夠時,它會向下推送;當頁面內容沒有撐滿整個螢幕時,它就固定在底部。

而不是像下圖這樣:

 

#問題

如果先前不知道stricky footer,使用fixed固定在底部的話,像下圖這樣


#
position: fixed;
width: 32px;
height: 32px;
bottom: 20px;
left: calc(50% - 16px);
font-size: 32px;

那樣x 會覆蓋內容,顯然是不符合要求的不實際的,而且不美觀的。

所以經典的stricky footer 廣為所用,適用情景也非常多,前幾天回顧第一次做的項目,發現很多地方適用。

解決方案

stricky footer主要有三種解決方案,我們建立一點簡單的程式碼


<body>
  <p class="content"></p>
  <p class="footer"></p>
</body>

1.為內容區域加上最小的高度

這個方法主要是用視窗vh來計算整體視窗的高度,然後減去底部footer的高度,從而得出內容區域的最小高度


.content{
  min-height:calc(100vh - `footer的高度`);
  box-sizing:border-box;
}

這種方法很簡單,但是如果頁面的footer高度不同,每個頁面都要重新計算一次,所以不建議

2.使用flex佈局

flex佈局如今在行動端佈局可謂是佔有一片天地,廣為所用。

我們通常利用flex佈局對視窗寬度進行分割,一邊是固定寬度,另一邊是自適應寬度。同樣的,flex佈局當然也可以對視窗高度進行分割,footer的flex為0,這樣flex就獲得其固有的高度;content的flex為1。這樣它會充滿除去footer的其餘部分


body{
  display:flex;
  flex-flow:column;
  min-height:100vh;
}
.content{
  flex:1;
}
.footer{
  flex:0;
}

這種方法較為推薦

3.在content的外面加入一個wrapper層

這種方法也是黃軼事老師使用的方法,在content的外面添加一個wrapper層包裹


<body>
  <p class="content-wrapper clearfix">
    <p class="content"></p>
  </p>
  <p class="footer"></p>
</body>

這種做法為了保證相容性,我們通常會在wrapper層上加入一個clearfix類,


html,body,.content-wrapper{
  height:100%
}
body > .content-wrapper{
  height:auto;
  min-height:100%;
}
.content{
  padding-bottom:150px //与footer的高度相同
}
.footer{
  position:relative;
  margin-top:-150px; // -`footer高度`
  height:150px;
  clear:both;
}
.clearfix{
  display:inline-block;
}
.clearfix{
  content:"";
  display:block;
  height:0;
  clear:both;
  visibility: hidden;
}

這樣就完成了stricky footer,這種方法也比較推薦,但是加入的程式碼有點多,而且改變了HTML結構。

以上是stricky footer的解決方法小結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn