十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
小編給大家分享一下css網(wǎng)格布局的常用屬性是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
和flex布局不同的是,網(wǎng)格布局(grid)是一個(gè)二維的布局,可以創(chuàng)建任意行列的布局。
首先來(lái)介紹幾個(gè)概念;
想象一個(gè)三行三列的布局,網(wǎng)格線就是構(gòu)成網(wǎng)格所有的線條,三行三列的布局每行就會(huì)有4條網(wǎng)格線。
網(wǎng)格軌道就是相鄰兩條平行的網(wǎng)格線之間的部分。
和flex布局一樣,他會(huì)有父容器和子項(xiàng)目,在這兒我們稱為網(wǎng)格容器和網(wǎng)格項(xiàng)。
接下來(lái),我們從網(wǎng)格容器到網(wǎng)格項(xiàng)的各個(gè)基本屬性來(lái)介紹網(wǎng)格布局。
網(wǎng)格容器
網(wǎng)格容器是決定將網(wǎng)格分為幾行幾列,所以首先實(shí)現(xiàn)網(wǎng)格布局就要使該容器具有以下幾個(gè)屬性:
display: grid;
grid-template-columns
grid-template-rows
grid-gap
grid-template-areas
grid-auto-flow: dense | row(default) | column
justify-items: start|end|center|stretch(default)
align-items:
start|end|center|stretch(default)
grid-auto-columns:
網(wǎng)格布局的父容器基本屬性就是以上幾個(gè)。
display:grid
表示為網(wǎng)格布局,和flex布局中的display:flex意義相同,同樣該屬性還可以取值:inline-grid和subgrid
grid-template-columns
創(chuàng)建網(wǎng)格的列數(shù),除了百分比的形式之外,還支持各種單位的組合形式,比如 grid-template-columns: 100px 20% 1em 1vw 20%;
但是有個(gè)repeate函數(shù)可以簡(jiǎn)化相同的值,比如grid-template-columns: repeat(5, 20%)表示5個(gè)20%的寬度,和例子中的意義完全相同。
fr用于等分剩余空間,它的大小是將該屬性上的所有可計(jì)算的值(包括各種單位,百分比)除去后,剩余空間的大小。
推薦使用fr。它也會(huì)自動(dòng)計(jì)算除了grid-gap之外其余的部分。
如 grid-template-columns:100px 1fr 2fr repeat(2, 20%)。同樣的5列布局,其中的 1fr 表示寬度為總寬度減去左邊的100px和右側(cè)兩列的20%之后剩余的部分除以三。即第二列的寬度是將會(huì)是第三列的一半。
grid-template-rows
屬性值和grid-template-columns的屬性值完全一樣。
grid-template
是grid-template-rows和grid-template-columns的縮寫(xiě)形式,屬性值的寫(xiě)法為
grid-template: 1fr 50px/1fr 4fr; //為行數(shù)/列數(shù)的形式,
該代碼表示兩行兩列的布局,第一行的高度為底行的50px確定之后剩下的高度。第一列的寬度為將該容器分為五等分,第一列占據(jù)一份,第二列占據(jù)四份。
grid-gap
可以取一或兩個(gè)值,表示行列之間的間隙。
grid-template-areas
通過(guò)引用 grid-area 屬性指定的 網(wǎng)格區(qū)域(Grid Area) 名稱來(lái)定義網(wǎng)格模板。重復(fù)網(wǎng)格區(qū)域的名稱導(dǎo)致內(nèi)容跨越這些單元格。一個(gè)點(diǎn)號(hào)(.)代表一個(gè)空的網(wǎng)格單元。這個(gè)語(yǔ)法本身可視作網(wǎng)格的可視化結(jié)構(gòu)。
grid-template-areas:
“header header header header”
“main main . sidebar”
“footer footer footer footer”;
grid-auto-flow:
row:告訴自動(dòng)布局算法依次填充每行,根據(jù)需要添加新行
column:告訴自動(dòng)布局算法依次填入每列,根據(jù)需要添加新列
dense:告訴自動(dòng)布局算法在稍后出現(xiàn)較小的網(wǎng)格項(xiàng)時(shí),嘗試填充網(wǎng)格中較早的空缺
justify-items
沿著 行軸線(row axis) 對(duì)齊 網(wǎng)格項(xiàng)(grid items) 內(nèi)的內(nèi)容
align-items
沿著 列軸線(row axis) 對(duì)齊 網(wǎng)格項(xiàng)(grid items) 內(nèi)的內(nèi)容
grid-auto-columns:
隱式網(wǎng)格的寬度
grid-auto-rows:
隱式網(wǎng)格的高度
網(wǎng)格項(xiàng)
網(wǎng)格項(xiàng)表示網(wǎng)格內(nèi)部的直接子元素,不包括子元素的子元素。
常用屬性:
grid-column-start: 列網(wǎng)格線 開(kāi)始,
grid-column-end: 列網(wǎng)格線 結(jié)束
grid-column: start/end | start/span count
order: 與z-index的屬性相同,表示層疊的位置。
grid-area: 網(wǎng)格名,在使用grid-template-areas時(shí)比較有用。
justify-self: 單個(gè)網(wǎng)格項(xiàng)在行軸線的對(duì)齊方式
align-self: 單個(gè)網(wǎng)格項(xiàng)在列軸線的對(duì)齊方式