最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

  發(fā)布時(shí)間:2015-03-27 15:06:26   作者:佚名   我要評(píng)論
這篇文章主要介紹了移動(dòng)端解決懸浮層(懸浮header、footer)會(huì)遮擋住內(nèi)容的3種方法,本文講解如何解決移動(dòng)端懸浮層會(huì)遮擋住內(nèi)容的3種方法,需要的朋友可以參考下

在現(xiàn)在的前端頁(yè)面中,尤其是移動(dòng)端,經(jīng)常會(huì)需要將<header>或者是<footer>模塊懸浮出來(lái),跟隨頁(yè)面的滑動(dòng)保持定位在頁(yè)面的最上方或者是最下方,如下圖所示。

“回復(fù)主題”模塊,就是跟隨頁(yè)面的浮動(dòng)一直懸浮在頁(yè)面的最下方,代碼結(jié)構(gòu)如下。


復(fù)制代碼
代碼如下:

...
<section class='footer'>
<div class='reply-topic'>回復(fù)主題</div>
</section>
...

實(shí)現(xiàn)這樣的功能當(dāng)然是利用position:fixed。但是,使用position:fixed有一個(gè)bug,以懸浮<footer>在最下方為例(懸浮<header>同理),當(dāng)頁(yè)面滑到最下方的時(shí)候,由于是fixed定位,脫離了正常文檔流,導(dǎo)致會(huì)遮擋住一部分內(nèi)容。如下所示:

上面左邊是有問(wèn)題的顯示,右邊為正常顯示。那么,如何解決這個(gè)問(wèn)題呢?在此,我拋磚引玉提出三種我的看法,希望能有更好的方法。

法一. Javasrript解決

  使用js解決,判定當(dāng)滑動(dòng)條滑到頁(yè)面內(nèi)容的最底端的時(shí)候,將原本會(huì)脫離文檔流的fixed定位改為不脫離文檔流的relative定位即可。

  使用腳本解決問(wèn)題是最繁重的方法,能用css解決的盡量不使用腳本,但是也是一種方法。

復(fù)制代碼
代碼如下:

//滾動(dòng)條在Y軸上的滾動(dòng)距離
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> //滑動(dòng)監(jiān)聽(tīng)
  window.onscroll = function(){
//滑到底部時(shí)footer定于最下方,假定<footer>的height為60
if((getScrollHeight() - getScrollTop() - getWindowHeight()) > 61)
$('.footer').css('position','fixed');
else
$('.footer').css('position','relative');
}

 法二.給body加上padding-bottom

  給html<body>標(biāo)簽加上一個(gè)padding-bottom屬性,這樣正常文檔流的內(nèi)容距離body底部就會(huì)產(chǎn)生一個(gè)padding-bottom設(shè)置的距離。

  缺點(diǎn)是,考慮到現(xiàn)在項(xiàng)目上線之后模塊的復(fù)用及經(jīng)常需要合并css文件,當(dāng)其他頁(yè)面不需要這個(gè)懸浮塊,就會(huì)給不需要<footer>fixed定位的頁(yè)面造成負(fù)擔(dān),不推薦使用這種方法。

復(fù)制代碼
代碼如下:

//假定<footer>的高度為60px
body
{
padding-bottom: 60px;
}

法三.增加同級(jí)占位符<div>

  個(gè)人認(rèn)為這個(gè)方法最為實(shí)用,在<footer>塊之外再包裹一層div,然后再增加一個(gè)與<footer>同級(jí)的<div>塊,這個(gè)<div>塊的高度設(shè)置為與<footer>同樣高,不包含任何內(nèi)容,這樣就可以起到一個(gè)占位符的效果,在頁(yè)面最底占據(jù)與<footer>同樣高度的空間,當(dāng)然頁(yè)面滑到最下方,原本的<footer>懸動(dòng)塊就會(huì)與這個(gè)占位塊完美重疊。且不會(huì)對(duì)其他頁(yè)面產(chǎn)生影響。代碼如下:

  唯一缺點(diǎn)是不符合語(yǔ)義化,增加了無(wú)實(shí)質(zhì)內(nèi)容的空標(biāo)簽。

復(fù)制代碼
代碼如下:

<!-- footer外包裹一層div-->
<div>
<!--充當(dāng)占位符的div塊,無(wú)實(shí)質(zhì)內(nèi)容 -->
<div style="height:60px;"></div> </p> <p> <!--fixed懸浮出來(lái)的footer -->
<section class='footer'>
<div class='reply-topic'>回復(fù)主題</div>
</section>
</div>

 以上是我想到的三種方法,才疏學(xué)淺,文中若有紕漏錯(cuò)誤或者有更好的方法,萬(wàn)望告知,感謝。

相關(guān)文章

最新評(píng)論

麦盖提县| 教育| 黔西| 新宾| 锡林浩特市| 竹北市| 福州市| 九江县| 涞水县| 乾安县| 大关县| 温泉县| 林芝县| 厦门市| 会同县| 乡城县| 天台县| 安泽县| 包头市| 太谷县| 达孜县| 嵊州市| 巫山县| 通渭县| 观塘区| 郯城县| 长宁县| 曲周县| 鹤岗市| 吉首市| 漯河市| 西昌市| 获嘉县| 临高县| 铜川市| 汝州市| 额尔古纳市| 石林| 乌鲁木齐县| 玉林市| 准格尔旗|