中國做爰網(wǎng)站外鏈工具軟件
一,grid布局概述
網(wǎng)格布局(Grid)是最強(qiáng)大的 CSS 布局方案。
它將網(wǎng)頁劃分成一個(gè)個(gè)網(wǎng)格,可以任意組合不同的網(wǎng)格,做出各種各樣的布局。以前,只能通過復(fù)雜的 CSS 框架達(dá)到的效果,現(xiàn)在瀏覽器內(nèi)置了。
Grid 布局與?Flex 布局有一定的相似性,都可以指定容器內(nèi)部多個(gè)項(xiàng)目的位置。但是,它們也存在重大區(qū)別。
Flex 布局是軸線布局,只能指定"項(xiàng)目"針對軸線的位置,可以看作是一維布局。Grid 布局則是將容器劃分成"行"和"列",產(chǎn)生單元格,然后指定"項(xiàng)目所在"的單元格,可以看作是二維布局。Grid 布局遠(yuǎn)比 Flex 布局強(qiáng)大。
二,基本概念
?2.1,容器和項(xiàng)目
????????采用網(wǎng)格布局的區(qū)域,稱為"容器"(container)。容器內(nèi)部采用網(wǎng)格定位的子元素,稱為"項(xiàng)目"(item)。
<div><div>item1</div><div>item2</div><div>item3</div>
</div>
上面代碼中,最外層的<div>
元素就是容器,內(nèi)層的三個(gè)<div>
元素就是項(xiàng)目。
注意:項(xiàng)目只能是容器的頂層子元素,不包含項(xiàng)目的子元素,比如上面代碼的<p>
元素就不是項(xiàng)目。Grid 布局只對項(xiàng)目生效。
2.2,行和列
容器里面的水平區(qū)域稱為"行"(row),垂直區(qū)域稱為"列"(column)
2.3,單元格
行和列的交叉區(qū)域,稱為"單元格"(cell)。
正常情況下,n
行和m
列會產(chǎn)生n x m
個(gè)單元格。比如,3行3列會產(chǎn)生9個(gè)單元格。
三,容器相關(guān)屬性
Grid 布局的屬性分成兩類。一類定義在容器上面,稱為容器屬性;另一類定義在容器內(nèi)部,稱為項(xiàng)目屬性。這部分先介紹容器屬性。
3.1,display 屬性
display: grid?
指定一個(gè)容器采用網(wǎng)格布局。默認(rèn)情況下,容器元素都是塊級元素,但也可以設(shè)成行內(nèi)元素。
display: inline-grid?
指定一個(gè)容器采用網(wǎng)格布局。容器設(shè)定為內(nèi)聯(lián)塊元素
注意,設(shè)為網(wǎng)格布局以后,容器子元素(項(xiàng)目)的float
、display: inline-block
、display: table-cell
、vertical-align
和column-*
等設(shè)置都將失效。
3.2,grid-template-columns 屬性,grid-template-rows 屬性
容器指定了網(wǎng)格布局以后,接著就要?jiǎng)澐中泻土小?code>grid-template-columns屬性定義每一列的列寬,grid-template-rows
屬性定義每一行的行高。
.container {display: grid;grid-template-columns: 100px 100px 100px; //固定寬度grid-template-rows: 100px 100px 100px;
}.container {display: grid;grid-template-columns: 1fr 1fr 1fr; //分配幾列,自適應(yīng)寬度
}.container {display: grid;grid-template-columns: 1fr 2fr 1fr; //分配幾列,自適應(yīng)寬度,2fr自適應(yīng)兩倍寬度
}
3.2,auto-fill 關(guān)鍵字
有時(shí),單元格的大小是固定的,但是容器的大小不確定。如果希望每一行(或每一列)容納盡可能多的單元格,這時(shí)可以使用auto-fill
關(guān)鍵字表示自動填充。
.container {display: grid;grid-template-columns: repeat(auto-fill, 200px); // 表示每一項(xiàng)最低寬度是200px,根據(jù)容器寬度自適應(yīng)列數(shù)
}
除了auto-fill
,還有一個(gè)關(guān)鍵字auto-fit
,兩者的行為基本是相同的。只有當(dāng)容器足夠?qū)?#xff0c;可以在一行容納所有單元格,并且單元格寬度不固定的時(shí)候,才會有行為差異:auto-fill
會用空格子填滿剩余寬度,auto-fit
則會盡量擴(kuò)大單元格的寬度。
3.3,?fr 關(guān)鍵字
類似于柵格布局,網(wǎng)格布局提供了fr
關(guān)鍵字(fraction 的縮寫,意為"片段")。如果兩列的寬度分別為1fr
和2fr
,就表示后者是前者的兩倍,fr對網(wǎng)格做了自適應(yīng)的分配。
3.4,grid-row-gap 屬性,grid-column-gap 屬性,grid-gap 屬性
grid-row-gap
屬性設(shè)置行與行的間隔(行間距),
grid-column-gap
屬性設(shè)置列與列的間隔(列間距),
grid-gap
屬性是grid-column-gap
和grid-row-gap
的合并簡寫形式,語法如下
.container {grid-row-gap: 20px;grid-column-gap: 20px;
}// 等價(jià)于
.container {grid-gap: 20px 20px;
}
3.5,grid-template-areas 屬性
網(wǎng)格布局允許指定"區(qū)域"(area),一個(gè)區(qū)域由單個(gè)或多個(gè)單元格組成。grid-template-areas
屬性用于定義區(qū)域。
3.6,grid-auto-flow 屬性
劃分網(wǎng)格以后,容器的子元素會按照順序,自動放置在每一個(gè)網(wǎng)格。默認(rèn)的放置順序是"先行后列",即先填滿第一行,再開始放入第二行,即下圖數(shù)字的順序。
這個(gè)順序由grid-auto-flow
屬性決定,默認(rèn)值是row
,即"先行后列"。也可以將它設(shè)成column
,變成"先列后行"。
grid-auto-flow: column;
grid-auto-flow
屬性除了設(shè)置成row
和column
,還可以設(shè)成row dense
和column dense
。這兩個(gè)值主要用于,某些項(xiàng)目指定位置以后,剩下的項(xiàng)目怎么自動放置。
3.7,grid-template 屬性,grid 屬性
grid-template
屬性是grid-template-columns
、grid-template-rows
和grid-template-areas
這三個(gè)屬性的合并簡寫形式。
grid
屬性是grid-template-rows
、grid-template-columns
、grid-template-areas
、?grid-auto-rows
、grid-auto-columns
、grid-auto-flow
這六個(gè)屬性的合并簡寫形式。
不建議使用
四,項(xiàng)目屬性
4.1,grid-column-start 屬性,grid-column-end 屬性,grid-row-start 屬性,grid-row-end 屬性
項(xiàng)目的位置是可以指定的,具體方法就是指定項(xiàng)目的四個(gè)邊框,分別定位在哪根網(wǎng)格線。
grid-column-start
屬性:左邊框所在的垂直網(wǎng)格線grid-column-end
屬性:右邊框所在的垂直網(wǎng)格線grid-row-start
屬性:上邊框所在的水平網(wǎng)格線grid-row-end
屬性:下邊框所在的水平網(wǎng)格線
.item-1 {grid-column-start: 2;grid-column-end: 4;
}
如下圖,第一個(gè)項(xiàng)目的左邊框是第二根垂直網(wǎng)格線,右邊框是第四根垂直網(wǎng)格線。
.item-1 {grid-column-start: 1;grid-column-end: 3;grid-row-start: 2;grid-row-end: 4;
}
如下圖,指定四個(gè)邊框位置的效果
4.2,grid-column 屬性,grid-row 屬性
grid-column
屬性是grid-column-start
和grid-column-end
的合并簡寫形式,grid-row
屬性是grid-row-start
屬性和grid-row-end
的合并簡寫形式。
.item {grid-column: <start-line> / <end-line>;grid-row: <start-line> / <end-line>;
}
如下例子:
.item-1 {grid-column: 1 / 3;grid-row: 1 / 2;
}
/* 等同于 */
.item-1 {grid-column-start: 1;grid-column-end: 3;grid-row-start: 1;grid-row-end: 2;
}
4.3,grid-area 屬性
grid-area
屬性指定項(xiàng)目放在哪一個(gè)區(qū)域
4.4,justify-self 屬性,align-self 屬性,place-self 屬性
justify-self
屬性設(shè)置單元格內(nèi)容的水平位置(左中右),跟justify-items
屬性的用法完全一致,但只作用于單個(gè)項(xiàng)目。
align-self
屬性設(shè)置單元格內(nèi)容的垂直位置(上中下),跟align-items
屬性的用法完全一致,也是只作用于單個(gè)項(xiàng)目。