布局

1.靜態(tài)布局 (Static Layout 適用PC端)

傳統(tǒng)Web設(shè)計(jì),網(wǎng)頁(yè)上的所有元素的尺寸一律使用px作為單位。
優(yōu)點(diǎn):這種布局方式對(duì)設(shè)計(jì)師和CSS編寫(xiě)者來(lái)說(shuō)都是最簡(jiǎn)單的,亦沒(méi)有兼容性問(wèn)題。
缺點(diǎn):顯而易見(jiàn),即不能根據(jù)用戶(hù)的屏幕尺寸做出不同的表現(xiàn)

2.流式布局

使用百分?jǐn)?shù)(搭配min-、max-屬性使用)
頁(yè)面元素的寬度按照屏幕分辨率進(jìn)行適配調(diào)整,但整體布局不變
缺點(diǎn)明顯:寬度使用百分比定義,但是高度和文字大小等大都是用px來(lái)固定,所以在大屏幕的手機(jī)下顯示效果會(huì)變成有些頁(yè)面元素寬度被拉的很長(zhǎng),但是高度、文字大小還是和原來(lái)一樣(即,這些東西無(wú)法變得“流式”),顯示非常不協(xié)調(diào)。

3.自適應(yīng)布局

創(chuàng)建多個(gè)靜態(tài)布局,每個(gè)靜態(tài)布局對(duì)應(yīng)一個(gè)屏幕分辨率范圍

4.響應(yīng)式布局

檢測(cè)窗口大小利用bootstrap布局
響應(yīng)式設(shè)計(jì)的目標(biāo)是確保一個(gè)頁(yè)面在所有終端上都能顯示出令人滿(mǎn)意的效果
創(chuàng)建多個(gè)流體式布局,分別對(duì)應(yīng)一個(gè)屏幕分辨率范圍。可以把響應(yīng)式布局看作是流式布局和自適應(yīng)布局設(shè)計(jì)理念的融合。
優(yōu)點(diǎn):適應(yīng)pc和移動(dòng)端,如果足夠耐心,效果完美
缺點(diǎn):

  • (1)媒體查詢(xún)是有限的,也就是可以枚舉出來(lái)的,只能適應(yīng)主流的寬高。
  • (2)要匹配足夠多的屏幕大小,工作量不小,設(shè)計(jì)也需要多個(gè)版本。
5.彈性布局(rem/em布局)

包裹文字的各元素的尺寸采用em/rem做單位,而頁(yè)面的主要?jiǎng)澐謪^(qū)域的尺寸仍使用百分?jǐn)?shù)或px做單位

rem,em區(qū)別:rem,em都是順應(yīng)不同網(wǎng)頁(yè)字體大小展現(xiàn)而產(chǎn)生的。其中,em是相對(duì)其父元素,在實(shí)際應(yīng)用中相對(duì)而言會(huì)帶來(lái)很多不便;而rem是始終相對(duì)于html大小,即頁(yè)面根元素。

瀏覽器的默認(rèn)字體高度一般為16px,即1em:16px,但是 1:16 的比例不方便計(jì)算,為了使單位em/rem更直觀,CSS編寫(xiě)者常常將頁(yè)面跟節(jié)點(diǎn)字體設(shè)為62.5%,比如選擇用rem控制字體時(shí),先需要設(shè)置根節(jié)點(diǎn)html的字體大小,因?yàn)闉g覽器默認(rèn)字體大小16px*62.5%=10px。這樣1rem便是10px,方便了計(jì)算。

那么為什么一般多是 html{font-size:62.5%;} 而不是 html{font-size:10px;}呢?

因?yàn)橛行g覽器默認(rèn)的不是16px,或者用戶(hù)修改了瀏覽器默認(rèn)的字體大?。ㄒ?yàn)g覽器分辨率大小,視力,習(xí)慣等因素)。如果我們將其設(shè)置為10px,一定會(huì)影響在這些瀏覽器上的效果,所以最好用絕大多數(shù)用戶(hù)默認(rèn)的16作為基數(shù) * 62.5% 得到我們需要的10px。

html {font-size: 62.5%;/*10 ÷ 16 × 100% = 62.5%*/}
body {font-size: 1.4rem;/*1.4 × 10px = 14px */}
h1 { font-size: 2.4rem;/*2.4 × 10px = 24px*/}

實(shí)際項(xiàng)目設(shè)置成 font-size: 62.5%可能會(huì)出現(xiàn)問(wèn)題,因?yàn)閏hrome不支持小于12px的字體,計(jì)算小于12px的時(shí)候,會(huì)默認(rèn)取12px去計(jì)算,導(dǎo)致chrome的em/rem計(jì)算不準(zhǔn)確。

針對(duì)這個(gè)現(xiàn)象,可以嘗試設(shè)置html字體為100px,body 修正為16px,這樣 0.1rem 就是 10px,而body的字體仍然是默認(rèn)大小,不影響未設(shè)置大小的元素的默認(rèn)字體的大小。

移動(dòng)端彈性布局流行起來(lái)的原因歸根結(jié)底是rem單位對(duì)于(根據(jù)屏幕尺寸)調(diào)整頁(yè)面的各元素的尺寸、文字大小時(shí)比較好用。其實(shí),使用vw、vh等后起之秀的單位,可以實(shí)現(xiàn)完美的流式布局(高度和文字大小都可以變得“流式”),彈性布局就不再必要了。

響應(yīng)式和彈性布局之間的對(duì)比:

響應(yīng)式布局:改變?yōu)g覽器寬度,“布局”會(huì)隨之變化,不是一成不變的,例如導(dǎo)航欄在大屏幕下是橫排,在小屏幕下是豎排,在超小屏幕下隱藏為菜單,也就是說(shuō)如果有足夠的耐心,在每一種屏幕下都應(yīng)該有合理的布局,完美的效果。
rem布局:改變?yōu)g覽器寬度,頁(yè)面所有元素的高寬都等比例縮放,也就是大屏幕下導(dǎo)航是橫的,小屏幕下還是橫的只不過(guò)變小了。

圣杯布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
  
    <style>
    *{
        padding: 0;
        margin: 0;
    } 

    body{
        display: flex;
       flex-direction: column;
       height: 100vh;
    }
    
    #box1{
        width: 100vw;
        height: 50px;
    background-color: brown;
    }
    #box2{
        flex:1;
        background-color: rgb(42, 58, 165);
        overflow-y: auto;

    }
    #box3{
        width: 100vw;
        height: 50px;
    background-color: rgb(52, 165, 42);
    }
p{
    height: 1000px;
}
    </style>
</head>
<body>
    <div id="box1"></div>
    <div id="box2"><p>45343</p></div>
    <div id="box3"></div>
</body>
</html>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容