摘要:因而我們可以設(shè)置整個部分垂直居中和水平居中其他的對齊方式和中展現(xiàn)的類似,在此不再贅述。如上所述,使用這個屬性可以使某個子元素占據(jù)在容器元素屬性中定義的區(qū)域可以看到,號元素占據(jù)了區(qū)域。
參考資料:https://www.bilibili.com/video/BV1Bk4y197xm
從某種程度上說,grid布局是flex布局的升級版,主要用于元素在平面上的布局,例如我當前博客皮膚主頁上每個隨筆卡片的排布:
bilibili首頁上圖片鏈接的排版:
可以看出,grid布局往往用于在平面上排列元素,而且可以達到不錯的效果。
這也是grid布局和flex布局的主要差異,即:
和flex布局類似,grid布局也涉及容器元素和子元素,我們可能需要在兩種元素內(nèi)都設(shè)置相應(yīng)的css屬性才能得到希望的結(jié)果。
grid布局中的基本概念如下圖所示:
要啟用grid布局,和flex布局一樣,只需要修改容器元素的display
css屬性為grid
即可,如:
.grid-container { display: grid;}
首先是grid-template-columns
,它可以用于設(shè)置當前排列元素有多少列以及每列的寬度,例如設(shè)置:
.grid-container { display: grid; grid-template-columns: 100px 100px 100px; ...}
這樣設(shè)置代表排列元素為三列,每列的寬度為100px,效果如下:
同理,我們也可以設(shè)置排列元素的行數(shù)以及每一行的高度:
.grid-container { ... grid-template-rows: 100px 100px 100px 100px;}
調(diào)試工具下的效果:
像剛才那樣設(shè)置元素的行列可能會遇到一種麻煩的情況,例如如果列數(shù)有10列,那么我們則需要寫10次列的寬度,此時我們就可以使用repeat
寫法進行簡化,即:
.grid-container { grid-template-columns: repeat(3, 100px); /* => 100px 100px 100px */}
第一個參數(shù)是數(shù)量,第二個參數(shù)是大小。
此外,repeat
里的第一個參數(shù)也可以設(shè)置為auto-fill
,這樣子元素就會根據(jù)父元素的寬度大小進行自適應(yīng)排列了,例如:
fr可以方便地表示比例關(guān)系,和flex布局中給子元素設(shè)置flex屬性表示自己的占比類似。
例如在這里希望容器分成三列,并且每列等分容器的寬度,那么我們可以這樣寫:
.grid-container { grid-template-columns: repeat(3, 1fr);}
這代表著每行的每個元素都占據(jù)一份的剩余空間,因此可以實現(xiàn)三等分的效果:
我們也可以自定義比例,例如:
.grid-container { grid-template-columns: 1fr 2fr 3fr;}
可以看出,各列的寬度變成了1:2:3
。
例子如下:
.grid-container { grid-template-columns: 100px auto 100px;}
此時代表左右兩列各占用100px寬度,而中間則自動填充滿,這樣既是我們前面使用flex布局所得到的三欄布局:
顯而易見,這兩個屬性都是用于設(shè)置子元素之間間距的大小的
例如設(shè)置行間距:
.grid-container { ... row-gap: 20px;}
列間距是類似的,這里不贅述了。
此外還可以直接使用gap
來簡化兩個間距的設(shè)置:
.grid-container { ... gap: 20px;}
這個屬性主要用于設(shè)置元素是以行優(yōu)先還是列優(yōu)先進行排列的,默認為行優(yōu)先,因此我們進行這樣的修改:
.grid-container { grid-auto-flow: column;}
效果如下:
dense關(guān)鍵字
例如一些這種情況:
這里1號和2號元素的寬度都比較大,2號元素無法放在1號元素的右邊,因此1號元素右邊就出現(xiàn)了一個空位,而此時我們希望3號元素能夠向上占據(jù)這個空位進行緊密的排列,此時我們就可以在grid-auto-flow
屬性后添加dense
關(guān)鍵字:
.grid-container { grid-auto-flow: row dense;}
可以看到,此時完成了我們緊密排列的需求。
這個屬性用于設(shè)置子元素元素在網(wǎng)格內(nèi)的水平方向上的對齊。
這個屬性即用于設(shè)置子元素在規(guī)定的網(wǎng)格中是以什么樣的方式進行對齊的,具體效果如上圖所示,其默認值為stretch
(拉伸),這也就是為什么我們看到子元素占滿了各自的網(wǎng)格。
同理,這個屬性用于設(shè)置子元素元素在網(wǎng)格內(nèi)的垂直方向上的對齊,這里不展開了。
這個屬性是上面兩個屬性的簡寫,即:
.grid-container { place-items: center center; /* => justify-items:center; align-items: center; */}
這里的“整個內(nèi)容區(qū)域”指的是前面紅色概念圖中的紅色方框區(qū)域,并不是值整個容器,例如原來的例子中的content為下圖綠色邊框包圍的最外圍區(qū)域:
因此,這個屬性是用于設(shè)置content關(guān)于整個容器的對齊關(guān)系的。
因而我們可以設(shè)置整個部分垂直居中和水平居中:
.grid-container { ... justify-content: center; align-content: center;}
其他的對齊方式和flex中展現(xiàn)的類似,在此不再贅述。
這兩個屬性分別用于設(shè)置多出來的項目的寬和高:
使用方式如下案例所示:
.grid-container { grid-template-areas: a b b a c d a e f;}
這里區(qū)域的命名可以是任意的英文單詞,上面代碼所對應(yīng)的實際區(qū)域為:
這里只是定義區(qū)域,在子元素屬性上進行相應(yīng)的設(shè)置可以使該子元素占據(jù)某個區(qū)域。
簡寫:
.item { grid-column: 1 / 3; /* => grid-column-start: 1; grid-column-end: 3; */}
另一種寫法:使用span
.item { grid-column-start: span 2; }
代碼的效果和上面相同。
如上所述,使用這個屬性可以使某個子元素占據(jù)在容器元素屬性中定義的區(qū)域:
.item-1 { grid-area: a;}
可以看到,1號元素占據(jù)了a區(qū)域。
此外,grid-area
還可以用于簡寫上面的item位置設(shè)置:
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/123656.html
摘要:布局學習筆記布局學習筆記好久沒有寫博客了上關(guān)于布局的知識比較零散正好根據(jù)我這幾個月的實踐對布局做一個總結(jié)以備查閱基礎(chǔ)用法基礎(chǔ)用法布局的核心屬性有個總的來說布局就是父元素先定義好自己有幾行幾列然后子元素定義自己在第幾行第幾列可CSS Grid 布局學習筆記 好久沒有寫博客了, MDN 上關(guān)于 Grid 布局的知識比較零散, 正好根據(jù)我這幾個月的實踐對 CSS Grid 布局做一個總結(jié), 以備查...
摘要:你可以用網(wǎng)格這樣做這樣的顯示效果是沒什么錯誤的,當使用網(wǎng)格,重新定義列數(shù)非常簡單。絕對定位當我們絕對定位一個網(wǎng)格元素的時候,這個元素會跑到它的容器中,我們可以用和來定位它。最簡單的命名約定使用網(wǎng)格自動編號。 注:此文是我翻譯的第一篇技術(shù)文章。適合有一定CSS原生網(wǎng)格布局使用經(jīng)驗的開發(fā)者(讀前需要先去了解一下原生CSS網(wǎng)格的語法),原生CSS網(wǎng)格布局(Native CSS grid)截止...
摘要:你可以用網(wǎng)格這樣做這樣的顯示效果是沒什么錯誤的,當使用網(wǎng)格,重新定義列數(shù)非常簡單。絕對定位當我們絕對定位一個網(wǎng)格元素的時候,這個元素會跑到它的容器中,我們可以用和來定位它。最簡單的命名約定使用網(wǎng)格自動編號。 注:此文是我翻譯的第一篇技術(shù)文章。適合有一定CSS原生網(wǎng)格布局使用經(jīng)驗的開發(fā)者(讀前需要先去了解一下原生CSS網(wǎng)格的語法),原生CSS網(wǎng)格布局(Native CSS grid)截止...
摘要:前情提要本人是一個學渣非科班入行年了吧前端東西真的好多啊又不斷更新需要不斷的學學學在去年年底開始我就開始不斷的尋找學習的方法如何更加高效的學習如何才能學的又快又好在這半年來不斷的總結(jié)慢慢找到了一些方法和訣竅此文章不是網(wǎng)格布局的教學文章只前情提要 ??本人是一個學渣,非科班入行2年了吧,前端東西真的好多啊,又不斷更新.需要不斷的學學學, showImg(https://user-gold-c...
閱讀 824·2023-04-25 19:43
閱讀 4071·2021-11-30 14:52
閱讀 3900·2021-11-30 14:52
閱讀 3984·2021-11-29 11:00
閱讀 3883·2021-11-29 11:00
閱讀 4006·2021-11-29 11:00
閱讀 3719·2021-11-29 11:00
閱讀 6434·2021-11-29 11:00