使用 CSS Grid Generator來快速使用及學(xué)習(xí) Grid 布局
CSS Grid Generator
CSS Grid Generator是一個由Sarah Drasner創(chuàng)建的免費(fèi)工具。它是一個可視化設(shè)計(jì)工具,允許咱們創(chuàng)建一個基本的 grid 布局,然后就可以使用生成對應(yīng)的代碼,幫助咱們快速布局。
第一次進(jìn)入是界面是這樣子的:
CSS Grid 布局示例
當(dāng)我正在學(xué)習(xí)一些東西時,我發(fā)現(xiàn)最好的學(xué)習(xí)方法是使用現(xiàn)有的工具構(gòu)建實(shí)用的東西。 在本文中,咱們先從一個簡單的布局開始,然后使用CSS Grid Generator創(chuàng)建在實(shí)際項(xiàng)目中使用所需的代碼。
首先從一個典型的布局開始,如下所示:
接著在 CSS Grid Generator 界面的右側(cè)更新對應(yīng)的以下內(nèi)容:
- 行: 4
- 列: 3
- 列間距: 20
- 行間距: 20
間距讓咱們的內(nèi)容之間有一定的空白??梢灾皇褂昧虚g距,但我想在 Header 和 Footer 之前留出一些空白,所以還同時使用行間距。
接下來,就是需要定義應(yīng)用程序的不同區(qū)域。在 CSS Grid Generator 中,可以單擊并拖動到需要合并地方來創(chuàng)建一個區(qū)域。咱們希望Footer跨越整個網(wǎng)格,側(cè)邊欄占用一個單元格,主內(nèi)容區(qū)域跨越2列,F(xiàn)ooter 跨越4列,最終效果,如下:
這看起來有點(diǎn)像咱們想要的布局,但仍然需要定義一些具體的尺寸。 在CSS Grid Generator會注意到每行和每列旁邊都有一個輸入框,可用于設(shè)置特定大小。
- Header: 100px height
- Sidebars: 200px width
- Footer: 50px height
這看起來更像更像咱們想要的布局,但是你可能會問1fr是多少。
軌道可以用任何長度單位來定義。Grid還引入了一個額外的長度單位,以幫助各位創(chuàng)建靈活的Grid軌道。新的fr單元表示網(wǎng)格容器中可用空間的一小部分。
第二行的1fr會告訴區(qū)域占用剩余的可用空間。如果將容器設(shè)置為100vh,就會占據(jù)整個頁面的內(nèi)容,列也是如此。
CSS Grid Generated 生成的代碼
點(diǎn)擊“請給我示例中的代碼”就可以查看對應(yīng)布局生成的 CSS 代碼:
創(chuàng)建一個simple-layout.htm并添加以下代碼:
接下來添加上面生成的 CSS:
接著添加對應(yīng)的標(biāo)簽:
最后添加下面的CSS,它將為.div1 - .div5添加一些背景色:
- div:not(.parent) {
- padding: 10px;
- background-color: rgb(199, 199, 199);
- }
運(yùn)行:
這看起來很好,但你希望它占據(jù)整個瀏覽器窗口。所以需要向.parent類添加height: 100vh:
- .parent {
- display: grid;
- grid-template-columns: 200px 1fr 1fr 200px;
- grid-template-rows: 100px 1fr 50px;
- grid-column-gap: 20px;
- grid-row-gap: 20px;
- height: 100vh;
- }
最終效果:
網(wǎng)格軌道(Grid Track) 加餐
兩個相鄰的網(wǎng)絡(luò)線之間為網(wǎng)絡(luò)軌道。
圖中的同方向 1 和 2, 2 和 3 都是相鄰的網(wǎng)絡(luò)線,當(dāng)然同方向的 1 和 3 或者不同方向的 1 和 2 就不是相鄰的網(wǎng)絡(luò)線。
相鄰的網(wǎng)絡(luò)線為網(wǎng)格軌道,如下,黑色1 和 2 之間就構(gòu)成了網(wǎng)絡(luò)軌道(背景深橘色):
上面總共有 5 個網(wǎng)絡(luò)軌道,水平方向灰色 1 和 2, 2 和 3, 3 和 4,豎直方向黑色的 1 和 2, 2 和 3,共 5 個。
網(wǎng)格單元(Grid Cell) 加餐
兩個相鄰的列網(wǎng)絡(luò)線和兩個相鄰的行網(wǎng)絡(luò)線組成的就是網(wǎng)絡(luò)單元,如下面的深橘色背景就是網(wǎng)絡(luò)單元。
網(wǎng)絡(luò)單元要與網(wǎng)絡(luò)項(xiàng)(項(xiàng)目)區(qū)別開來,網(wǎng)絡(luò)項(xiàng)是 Html 中可以找的到 Dom 元素,網(wǎng)絡(luò)單元是在定義容器的時候,它就會分割出來的一個一個單元格。
網(wǎng)格區(qū)域(Grid Area) 加餐
四個網(wǎng)絡(luò)線包圍的總空間。
fr單位(加餐)
剩余空間分配數(shù),用于在一系列長度值中分配剩余空間,如果多個已指定了多個部分,則剩下的空間根據(jù)各自的數(shù)字按比例分配。