stricky footer設(shè)計(jì)是最古老和最常見的效果之一,我們都曾經(jīng)歷過類似的情景:
如果頁(yè)面內(nèi)容不夠長(zhǎng)的時(shí)候,頁(yè)腳塊粘貼在底部;如果內(nèi)容足夠長(zhǎng)時(shí),頁(yè)腳塊會(huì)被內(nèi)容向下推送。
這些天做vue+express實(shí)戰(zhàn)的練習(xí),跟著黃軼老師倒是認(rèn)識(shí)了stricky footer,就認(rèn)真的了解學(xué)習(xí)了一下,但是前兩天的問題,今天幾種解決方案的詳細(xì)情況竟然有些模糊,所以還是記錄下來吧!求學(xué)之路就是這樣,不斷地積累和重復(fù)。
上圖底部的 x
就用到了經(jīng)典的stricky footer,單頁(yè)面內(nèi)容足夠時(shí),它會(huì)向下推送;當(dāng)頁(yè)面內(nèi)容沒有撐滿整個(gè)屏幕時(shí),它就固定在底部。
而不是像下圖這樣:
問題
如果此前不知道stricky footer,使用fixed固定在底部的話,像下圖這樣
position: fixed;width: 32px;height: 32px;bottom: 20px;left: calc(50% - 16px);font-size: 32px;
那樣 x
會(huì)覆蓋內(nèi)容,顯然是不符合要求的不實(shí)際的,而且不美觀的。
所以經(jīng)典的stricky footer 廣為所用,適用情景也非常多,前幾天回顧第一次做的項(xiàng)目,發(fā)現(xiàn)很多地方適用。
解決方案
stricky footer主要有三種解決方案,我們構(gòu)建一點(diǎn)簡(jiǎn)單的代碼
<body> <div class="content"></div> <div class="footer"></div></body>
1.為內(nèi)容區(qū)域添加最小的高度
這個(gè)方法主要是用視口vh來計(jì)算整體視窗的高度,然后減去底部footer的高度,從而得出內(nèi)容區(qū)域的最小高度
.content{ min-height:calc(100vh - `footer的高度`); box-sizing:border-box;}
這種方法很簡(jiǎn)單,但是如果頁(yè)面的footer高度不同,每個(gè)頁(yè)面都要重新計(jì)算一次,所以并不推薦
2.使用flex布局
flex布局如今在移動(dòng)端布局可謂是占有一片天地,廣為所用。
我們通常利用flex布局對(duì)視窗寬度進(jìn)行分割,一側(cè)是固定寬度,另一側(cè)是自適應(yīng)寬度。同樣的,flex布局當(dāng)然也可以對(duì)對(duì)視窗高度進(jìn)行分割,footer的flex為0,這樣flex獲得其固有的高度;content的flex為1。這樣它會(huì)充滿除去footer的其余部分
body{ display:flex; flex-flow:column; min-height:100vh;}.content{ flex:1;}.footer{ flex:0;}
這種方法較為推薦
3.在content的外面添加一個(gè)wrapper層
這種方法也是黃軼老師使用的方法,在content的外面添加一個(gè)wrapper層包裹
<body> <div class="content-wrapper clearfix"> <div class="content"></div> </div> <div class="footer"></div></body>
這種做法為了保證兼容性,我們通常會(huì)在wrapper層上添加一個(gè)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,這種方法也比較推薦,但是加入的代碼有點(diǎn)多,而且改變了HTML結(jié)構(gòu)。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選