您好,登錄后才能下訂單哦!
小編給大家分享一下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的縮寫形式,屬性值的寫法為
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)格線 開始,
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ì)齊方式
<div class='container'> <div class='child'></div> </div> <style> .container { display: grid; width: 580px; height: 580px; grid-gap: 3px; grid-template-rows: repeat(5, 1fr); grid-template-columns: repeat(5, 1fr); background-color: blanchedalmond; } .child { grid-column-start: 6; grid-column-end: 3; grid-row-start: 1; grid-row-end: 5; background: url(./babar.png); background-size: 116px 116px; order:1; }
在審查元素的時(shí)候毫不意外的發(fā)現(xiàn)該布局為五行五列的布局,上述的child中前四行代碼屬性的值都是以網(wǎng)格線的順序?yàn)榛鶞?zhǔn),前兩行代碼表示第六列網(wǎng)格線開始,到第三列網(wǎng)格線結(jié)束,即表示后三列。其中的start不一定要比end小。第三四行代碼表示第一個(gè)網(wǎng)格線開始,第五個(gè)網(wǎng)格線結(jié)束,即表示前四行,四行代碼綜合起來(lái)就如圖所示。
當(dāng)然,child中的前四行代碼也可以簡(jiǎn)寫成這樣:
grid-row: 1/ 5;
grid-column: 6/ 3;
或者
grid-row: 1/ span 4; // 橫向第一個(gè)網(wǎng)格線開始,以下的4個(gè)網(wǎng)格軌道
grid-column: 3/span 3; // 豎向第三條網(wǎng)格線開始,以后的3個(gè)網(wǎng)格軌道
甚至簡(jiǎn)寫成這樣
grid-area: 1/3/ span 4/span 3;
以上是“css網(wǎng)格布局的常用屬性是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。