grid布局

1.什么是grid布局?

grid布局是最強(qiáng)大的布局方案,它把網(wǎng)頁分成了一個(gè)個(gè)可以任意組合的網(wǎng)格.

1.1grid布局與flex布局的區(qū)別?

flex是軸線布局,根據(jù)項(xiàng)目需求指定軸線方向.是'一維布局'
grid布局將容器分為行和列,產(chǎn)生單元格,然后指定'項(xiàng)目'所在單元格,可以看作是'二維布局'.grid布局遠(yuǎn)比flex布局強(qiáng)大

2.grid布局的基礎(chǔ)概念

2.1容器與項(xiàng)目

采用網(wǎng)格布局的區(qū)域,我們稱之為容器.
容器內(nèi)部使用網(wǎng)格定位的元素,我們稱之為項(xiàng)目.項(xiàng)目只能是容器的頂層元素.例如:

<div>
  <div><p>1</p></div>
  <div><p>2</p></div>
  <div><p>3</p></div>
</div>

最外層的div是容器的話,那么里面的三個(gè)div就是項(xiàng)目,而所有的p標(biāo)簽都不是項(xiàng)目.

2.2行和列&單元格

容器的水平區(qū)域?yàn)樾?垂直區(qū)域?yàn)榱?
某行某列的交叉區(qū)域就是一個(gè)單元格.
通常n行m列的容器會(huì)產(chǎn)生n*m個(gè)單元格.

2.3網(wǎng)格線

劃分單元格的線我們稱之為網(wǎng)格線,通常n行會(huì)有n+1條網(wǎng)格線,m列也會(huì)有m+1條網(wǎng)格線.

3.容器屬性

定義在容器上的屬性我們稱之為容器屬性,定義在項(xiàng)目的屬性我們稱之為項(xiàng)目屬性.

3.1 display屬性

.container{
display:grid;
}

默認(rèn)情況下,容器都是塊級(jí)元素,當(dāng)然也可以設(shè)置為行內(nèi)塊級(jí)元素.

div {
  display: inline-grid;
}

3.2 grid-template-columns/rows屬性

容器被指定了grid布局后,就該給容器指定行和列了.

.container {
  display: grid;
  grid-template-columns: 100px 100px 100px;
  grid-template-rows: 100px 100px 100px;
}

該代碼指定了一個(gè)三行三列容器,且每一個(gè)容器的行高和列寬都是100像素.
這里除了寫像素值以外也可以寫百分比.

.container {
  display: grid;
  grid-template-columns: 33.3% 33.3% 33.3%;
  grid-template-rows: 33.3% 33.3% 33.3%;
}

repeat()

但如此重復(fù)寫屬性值很麻煩,就可以使用repeat()函數(shù)來repeat.那以上代碼就可以改寫為

.container {
  display: grid;
  grid-template-columns: repeat(3,33.3%);
  grid-template-rows: repeat(3,33.3%);
}

那同學(xué)們應(yīng)該看出來了,repeat()方法接受兩個(gè)參數(shù),第一個(gè)參數(shù)是重復(fù)次數(shù),第二個(gè)參數(shù)是值.

grid-template-columns: repeat(2, 100px 20px 80px);

那這段代碼會(huì)生成幾列呢?
有時(shí)候單元格大小固定了,但容器的大小不固定,那就應(yīng)該使用auto-fill屬性自動(dòng)填充.

auto-fill

.container {
  display: grid;
  grid-template-columns:repeat(auto-fill,100px);
}

自動(dòng)生成n個(gè)列寬100px的單元格,生成到裝不下為止.

fr

為了方便反應(yīng)比例關(guān)系,grid提供了fr關(guān)鍵字(fraction//片段的縮寫)來直觀反應(yīng)比例關(guān)系.

.container {
  display: grid;
  grid-template-columns:grid-template-columns: 1fr 1fr;
}

上面代碼表示生成相同寬度的兩列.(即一行元素被兩個(gè)寬div分割)

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

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

  • CSS Grid(網(wǎng)格) 布局(又稱為 “Grid(網(wǎng)格)” ),是一個(gè)二維的基于網(wǎng)格的布局系統(tǒng)它的目標(biāo)是完全改變...
    諾CIUM閱讀 1,355評(píng)論 0 3
  • 上一篇,介紹了grid的瀏覽器兼容和重要的幾個(gè)概念,接下來繼續(xù)介紹grid的容器屬性。 Grid(網(wǎng)格) 屬性目錄...
    codeTao閱讀 2,199評(píng)論 0 1
  • 前言 之前寫過一篇關(guān)于flex的布局,但是發(fā)現(xiàn)很多的問題,flex布局雖然可以解決,但是解決起來比較復(fù)雜,究其本質(zhì)...
    kim_jin閱讀 965評(píng)論 2 3
  • 簡介CSS網(wǎng)格布局(又稱“網(wǎng)格”),是一種二維網(wǎng)格布局系統(tǒng)。CSS在處理網(wǎng)頁布局方面一直做的不是很好。一開始我們用...
    _leonlee閱讀 65,766評(píng)論 25 173
  • 簡介 CSS網(wǎng)格布局(又名“網(wǎng)格”)是一個(gè)二維的基于網(wǎng)格的布局系統(tǒng),其目的只在于完全改變我們?cè)O(shè)計(jì)基于網(wǎng)格的用戶界面...
    禮知白閱讀 728評(píng)論 0 0

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