移動端解決懸浮層(懸浮header、footer)會遮擋住內(nèi)容的3種方法

在現(xiàn)在的前端頁面中,尤其是移動端,經(jīng)常會需要將<header>或者是<footer>模塊懸浮出來,跟隨頁面的滑動保持定位在頁面的最上方或者是最下方,如下圖所示。
“回復(fù)主題”模塊,就是跟隨頁面的浮動一直懸浮在頁面的最下方,代碼結(jié)構(gòu)如下。
...
<section class='footer'>
<div class='reply-topic'>回復(fù)主題</div>
</section>
...
實現(xiàn)這樣的功能當然是利用position:fixed。但是,使用position:fixed有一個bug,以懸浮<footer>在最下方為例(懸浮<header>同理),當頁面滑到最下方的時候,由于是fixed定位,脫離了正常文檔流,導(dǎo)致會遮擋住一部分內(nèi)容。如下所示:
上面左邊是有問題的顯示,右邊為正常顯示。那么,如何解決這個問題呢?在此,我拋磚引玉提出三種我的看法,希望能有更好的方法。
法一. Javasrript解決
使用js解決,判定當滑動條滑到頁面內(nèi)容的最底端的時候,將原本會脫離文檔流的fixed定位改為不脫離文檔流的relative定位即可。
使用腳本解決問題是最繁重的方法,能用css解決的盡量不使用腳本,但是也是一種方法。
//滾動條在Y軸上的滾動距離
function getScrollTop(){
return document.body.scrollTop;
}
//文檔的總高度
function getScrollHeight(){</p> <p> return document.body.clientHeight;
}
//瀏覽器視口的高度
function getWindowHeight(){
var windowHeight = 0;
if(document.compatMode == "CSS1Compat")
{
windowHeight = document.documentElement.clientHeight;
}
else
{
windowHeight = document.body.clientHeight;
}
return windowHeight;
}</p> <p> //滑動監(jiān)聽
window.onscroll = function(){
//滑到底部時footer定于最下方,假定<footer>的height為60
if((getScrollHeight() - getScrollTop() - getWindowHeight()) > 61)
$('.footer').css('position','fixed');
else
$('.footer').css('position','relative');
}
法二.給body加上padding-bottom
給html<body>標簽加上一個padding-bottom屬性,這樣正常文檔流的內(nèi)容距離body底部就會產(chǎn)生一個padding-bottom設(shè)置的距離。
缺點是,考慮到現(xiàn)在項目上線之后模塊的復(fù)用及經(jīng)常需要合并css文件,當其他頁面不需要這個懸浮塊,就會給不需要<footer>fixed定位的頁面造成負擔(dān),不推薦使用這種方法。
//假定<footer>的高度為60px
body
{
padding-bottom: 60px;
}
法三.增加同級占位符<div>
個人認為這個方法最為實用,在<footer>塊之外再包裹一層div,然后再增加一個與<footer>同級的<div>塊,這個<div>塊的高度設(shè)置為與<footer>同樣高,不包含任何內(nèi)容,這樣就可以起到一個占位符的效果,在頁面最底占據(jù)與<footer>同樣高度的空間,當然頁面滑到最下方,原本的<footer>懸動塊就會與這個占位塊完美重疊。且不會對其他頁面產(chǎn)生影響。代碼如下:
唯一缺點是不符合語義化,增加了無實質(zhì)內(nèi)容的空標簽。
<!-- footer外包裹一層div-->
<div>
<!--充當占位符的div塊,無實質(zhì)內(nèi)容 -->
<div style="height:60px;"></div> </p> <p> <!--fixed懸浮出來的footer -->
<section class='footer'>
<div class='reply-topic'>回復(fù)主題</div>
</section>
</div>
以上是我想到的三種方法,才疏學(xué)淺,文中若有紕漏錯誤或者有更好的方法,萬望告知,感謝。
相關(guān)文章
html的footer置于頁面最底部的簡單實現(xiàn)方法
下面小編就為大家?guī)硪黄猦tml的footer置于頁面最底部的簡單實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-05-13純css 實現(xiàn)footer 一直在頁面底部,不隨頁面滾動
CSS的簡單在于它易學(xué),CSS的困難在于尋找更好的解決方案。在CSS的世界里,似乎沒有完美這種說法。所以,現(xiàn)在介紹的CSS絕對底部,只是目前個人見過的方案中比較完美的吧。2014-09-02- 本節(jié)主要介紹了如何讓footer始終位于頁面的最底部不隨滾動而滾動,此效果在網(wǎng)頁中非常實用,建議大家好好學(xué)習(xí)哦2014-07-28
div footer標簽css實現(xiàn)位于頁面底部固定
Web頁面的“footer”部分隨著飄上來,處在頁面的半腰中間,給視覺效果帶來極大的影響,讓你的頁面看上去很不好看,特別是現(xiàn)在寬屏越來越多,這種現(xiàn)象更是常見,本文將介紹兩2012-12-02- 這個網(wǎng)頁即使內(nèi)容很少的情況下,它也始終在頁面的底部。否則頁面底部將留下大量空白。2009-10-20
- 下面小編就為大家?guī)硪黄肅SS使footer固定在頁面底部的實例代碼。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-05-13