国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > CSS > 正文

淺談css sticker-footer 布局

2024-07-11 08:58:44
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

在網(wǎng)頁(yè)設(shè)計(jì)中,Sticky footers設(shè)計(jì)是最古老和最常見(jiàn)的效果之一,大多數(shù)人都曾經(jīng)經(jīng)歷過(guò)。它可以概括如下:如果頁(yè)面內(nèi)容不夠長(zhǎng)的時(shí)候,頁(yè)腳塊粘貼在視窗底部;如果內(nèi)容足夠長(zhǎng)時(shí),頁(yè)腳塊會(huì)被內(nèi)容向下推送。這種效果不僅是無(wú)處不在,很受歡迎,而且實(shí)現(xiàn)起來(lái)看上去也非常容易。但實(shí)際上實(shí)現(xiàn)起來(lái)要比預(yù)期花的時(shí)間更多。此外,在CSS2.1中的解決方案中幾乎都要給頁(yè)腳設(shè)置一個(gè)固定高度。這是很脆弱的,很少是可行的。實(shí)際上實(shí)現(xiàn)這個(gè)效果過(guò)于復(fù)雜,而且還需要增加特定的標(biāo)記和一些Hack手段。在CSS2.1中受到一些限制,但使用現(xiàn)代CSS,我們能把這個(gè)效果做得更好,那要如何做呢?

1、嵌套層級(jí)不深,可直接繼承自 body width:100%; height:100%;

// html<body>    <div id="sticker">        <div class="sticker-con">我是內(nèi)容</div>    </div>    <div class="footer">我是腳</div></body>
// csshtml,body{    width:100%;    height:100%;}#sticker{    width:100%;    min-height:100%;}.sticker-con{    padding-bottom:40px;    // 40px 為 footer 本身高度}.footer{    margin-top:-40px;  // 40px 為 footer 本身高度}

2、嵌套層級(jí)很深,無(wú)法直接從上級(jí)繼承 百分比高度的

第一種方法:給需要的 sticker-footer 創(chuàng)建一個(gè) wrapper

   <body>        <div id="wrapper">            <div id="sticker">                <div class="sticker-con">我是內(nèi)容</div>            </div>            <div class="footer">我是腳</div>        </div>    </body>
    .wrapper{        position:fixed;  // 這樣 wrapper 就可以直接從 html,body 繼承 百分比高度了        overflow:auto;   // 當(dāng)高度超過(guò) 100% ;時(shí)產(chǎn)生滾動(dòng)條        width:100%;        height:100%;     // 繼承自 body    }    // wrapper 內(nèi)部包裹的結(jié)構(gòu),就如上所示了,css樣式也一樣

3. 當(dāng)無(wú)法用百分比獲取高度時(shí),也可通過(guò)js方式獲得

    //css樣式同第一種, 只是 sticker 的 min-height 用css獲取    <body>        <div id="sticker">            <div class="sticker-con">我是內(nèi)容</div>        </div>        <div class="footer">我是腳</div>    </body>    var sticker = document.querySelector('#sticker');    var h = document.body.clientHeight;    sticker.style.minHeight = h - 44 + 'px';    //這種方式也可應(yīng)對(duì)一些特殊情況,比如有頭部導(dǎo)航欄的情況,可以靈活的處理 min-height:

4. 強(qiáng)大的 flex 布局 flex-direction:column

將wrapper容器 display:flex; flex-direction:column

sticker: flex:1; 占據(jù)除footer以外的剩余空間

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">    <title>sticker footer</title></head><style>    html,body{        width: 100%;        height: 100%;        background-color: #ccc;        margin:0;        padding: 0;            }    header{        height:44px;        width: 100%;        text-align: center;        line-height: 44px;    }    #wrapper{        display: flex;        flex-direction: column;        width: 100%;        /*height: 100%;*/    }    #sticker{        background-color: red;        flex: 1;    }    #sticker .sticker-con{        padding-bottom: 40px;    }    .footer{        background-color: green;        height: 40px;    }</style>    <body>    <header>我是頭部</header>    <div id="wrapper">        <div id="sticker">            <div class="sticker-con">我是內(nèi)容</div>        </div>        <div class="footer">我是腳</div>    </div>    </body><script>    var wrapper = document.querySelector('#wrapper');    var h = document.body.clientHeight;    wrapper.style.minHeight = h - 44 + 'px';   // 減去頭部導(dǎo)航欄高度</script></html>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 丰顺县| 十堰市| 喀喇| 怀集县| 大新县| 左云县| 仁怀市| 马龙县| 湄潭县| 乐山市| 兴海县| 定日县| 红河县| 聂拉木县| 宣汉县| 永寿县| 开封市| 陈巴尔虎旗| 景谷| 前郭尔| 含山县| 尤溪县| 罗平县| 清水县| 敖汉旗| 沭阳县| 天全县| 竹山县| 奉新县| 定襄县| 东阿县| 望江县| 沾化县| 达拉特旗| 扎赉特旗| 田东县| 同德县| 大埔区| 泽普县| 五家渠市| 海门市|