Flex、Grid、媒體查詢實(shí)現(xiàn)響應(yīng)式布局

本篇文章主要講述使用Flex布局、Grid布局以及媒體查詢?nèi)N方式來(lái)實(shí)現(xiàn)響應(yīng)式布局。
文章涉及代碼在線coding地址

效果圖:

效果圖.png

文字描述:
屏幕大小不同,展示列數(shù)不同,1-5號(hào)按照屏幕大小可展示2到4列不等,6號(hào)始終獨(dú)占一行

Flex布局

阮一峰Flex布局講解

方案1(每一項(xiàng)元素不放大)

  1. 將可能會(huì)出現(xiàn)在一行的表單項(xiàng)放在一個(gè)父級(jí)容器內(nèi)
  2. 父級(jí)容器設(shè)置flex-flow: row wrap;表示橫向排列,空間不足時(shí)換行
  3. 設(shè)置容器內(nèi)每一項(xiàng)元素的flex: 0 0 420px;(420px為每一項(xiàng)元素的基礎(chǔ)寬度)
flex: 0 0 420px;
等同于
flex-grow: 0;
flex-shrink: 0;
flex-basis: 420px;

優(yōu)點(diǎn):

  1. 不用寫媒體查詢可實(shí)現(xiàn)屏幕變大列數(shù)自動(dòng)變多
  2. 展示多行時(shí),行列之間上下能夠?qū)R

缺點(diǎn):

當(dāng)增量空間不足時(shí),右側(cè)余出大量空白,不滿足UI適配規(guī)范


Flex方案1.png

方案2(每一項(xiàng)元素放大)

  1. 將可能會(huì)出現(xiàn)在一行的表單項(xiàng)放在一個(gè)父級(jí)容器內(nèi)
  2. 父級(jí)容器設(shè)置flex-flow: row wrap;表示橫向排列,空間不足時(shí)換行
  3. 設(shè)置容器內(nèi)每一項(xiàng)元素的flex: 1 0 420px;
flex: 1 0 420px;
等同于
flex-grow: 1;
flex-shrink: 0;
flex-basis: 420px;

優(yōu)點(diǎn):

  1. 不用寫媒體查詢可實(shí)現(xiàn)屏幕變大列數(shù)自動(dòng)變多
  2. 增量空間不足,不足以容納新列時(shí),其他列自動(dòng)拉寬

缺點(diǎn):

  1. 展示不下另起一行的列與上一列對(duì)應(yīng)列未對(duì)齊(嘗試過(guò)不可通過(guò)占位等實(shí)現(xiàn),字段個(gè)數(shù)不確定,不好占位)


    Flex方案2.png

Grid布局

阮一峰Grid布局講解

  1. 設(shè)置父容器為grid布局
  2. 設(shè)置每一列的寬度為自動(dòng)填充,最小寬度420,最大1fr
display: grid;
grid-template-columns: repeat(auto-fill, minmax(420px, 1fr));

優(yōu)點(diǎn)

可實(shí)現(xiàn)隨屏幕大小變化,列數(shù)跟隨變化,并可上下列對(duì)齊。

缺點(diǎn)

有兼容性問(wèn)題

Grid兼容性.png

Grid布局.png

如果不考慮兼容性問(wèn)題,可以考慮使用Grid布局,完美實(shí)現(xiàn)

media媒體查詢

  1. 將可能會(huì)出現(xiàn)在一行的表單項(xiàng)放在一個(gè)父級(jí)容器內(nèi)
  2. 父級(jí)容器設(shè)置flex-flow: row wrap;表示橫向排列,空間不足時(shí)換行
  3. 根據(jù)不同的屏幕寬度設(shè)置flex: 0 0 50%(兩列)/33%(三列)/25%(四列)
@media screen and (max-width: 1280px) {
    flex: 0 0 50%;
}
@media screen and (min-width: 1281px) and (max-width: 1440px) {
    flex: 0 0 33.33%;
}
@media screen and (min-width: 1441px) {
    flex: 0 0 25%;
}

優(yōu)點(diǎn):

  1. 兼容性強(qiáng)
  2. 實(shí)現(xiàn)各屏幕大小下展示不同的列數(shù)

缺點(diǎn):

  1. 需要寫多個(gè)媒體查詢


    媒體查詢.png

到這里,三種實(shí)現(xiàn)響應(yīng)式布局的方式就記錄完了??!每天都要進(jìn)步一點(diǎn)點(diǎn)!

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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