時間:2023-09-27 05:48:02 | 來源:網(wǎng)站運營
時間:2023-09-27 05:48:02 來源:網(wǎng)站運營
[CSS] 柵格化布局:柵格化布局幫助你更容易構建復雜的網(wǎng)頁設計。它會將HTML
元素轉換為網(wǎng)格的容器(有行有列)。你可以在網(wǎng)格里面添加你想要的子元素。HTML
元素轉換為網(wǎng)格的容器,只需要對其設置display: grid
即可。display: grid
告訴我們,可以使用CSS Grid
的相關屬性了。<dl class="container"> <dd class="item1">item1</dd> <dd class="item2">item2</dd> <dd class="item3">item3</dd> <dd class="item4">item4</dd> <dd class="item5">item5</dd> <dd class="item6">item6</dd></dl>.container{ display: grid;}
? 在CSS柵格布局中,父元素就是柵格容器(這里是class="container"的dl元素),其下的子元素為我們稱為項目items
container
為珊格化了,那么我們還得為這塊圈起來的元素設置模版列數(shù),表明列的區(qū)域。.container{ min-width: 200px; display: grid; grid-template-columns: 100px 100px auto;}
grid-template-columns
的屬性值100px 100px auto
的意思是將區(qū)域劃分為三列,第一列和第二列的寬度都為100px
,第三列的寬度為自適應。.container{ min-height: 200px; display: grid; grid-template-rows: 60px auto;}
grid-template-rows
的屬性值60px auto
的意思是將區(qū)域分為兩行,第一行的高度固定為60px
,而第二行的高度自適應。單位的設置可以有px, auto, %, fr
。這里的fr
是fraction
的縮寫,表示某物的部分。比如下面的例子:
grid-template-rows: auto 10% 2fr 1fr
,表示的意思是將柵格化的區(qū)域分為4行:第一行是根據(jù)內容自適應,第二行為區(qū)域的10%,最后剩余的區(qū)域分成三部分,2fr表示占其2/3,1fr表示占其1/3。
margin-left
和margin-right
的應用:.container{ display: grid; grid-template-columns: 100px 100px auto; grid-column-gap: 10px;}
grid-column-gap
表示列之間相隔10px
,對左邊界區(qū)域左間隔不影響,對右邊界區(qū)域右間隔不影響。margin-top
和margin-bottom
的應用:.container{ display: grid; grid-template-rows: 60px auto; grid-row-gap: 10px;}
grid-row-gap
表示行之間相隔10px
,對上邊界區(qū)域頂部間隔不影響,對下邊界區(qū)域底部間隔不影響。margin
一樣,我們可以對margin-top, margin-right, margin-bottom, margin-left
進行簡寫。grid-gap
可以對grid-row-gap, grid-column-gap
進行簡寫。grid-gap
的值又不像margin
一樣可以寫四個,它只有兩個:.container{ display: grid; grid-template-columns: 100px 100px auto; grid-template-rows: 60px auto; grid-gap: 10px 20px;}
grid-gap: 10px 20px
表示行間隔為10px
,列間隔為20px
。grid-column
表示列跨度,比如:.container{ display: grid; grid-template-columns: 100px 100px auto; .item5{ grid-column: 1 / 3 }}
grid-column
上面的列跨度,表示類名為item5元素橫跨第一列到第三列。grid-row
表示行跨度,比如:.container{ display: grid; grid-template-rows: 50px 50px auto; .item3{ grid-row: 2 / 4 }}
grid-row
上面的行跨度,表示類名為item3元素橫跨第二行到第四行。justify-self
更改元素寬度和排列的位置,有值如下:align-self
更改元素高度和排列的位置,有值如下:justify-items
屬性,而不是一個個子元素進行設置justify-self
屬性。justify-items
屬性值同justify-self
。.container{ display: grid; grid-template-columns: 1fr 1fr 1fr; grid-template-rows: 1fr 1fr 1fr; grid-gap: 10px; justify-items: center;}
align-items
屬性,而不是一個個子元素進行設置align-self
屬性。align-items
屬性值同align-self
。.container{ display: grid; grid-template-columns: 1fr 1fr 1fr; grid-template-rows: 1fr 1fr 1fr; grid-gap: 10px; align-items: center;}
grid-template-areas
為每個柵格單元命名。.container{ display: grid; grid-template-columns: 100px 100px auto; grid-template-rows: 50px 50px auto; grid-template-areas: "header header header" ". content content" "footer footer footer";}
注意: ? .表示表格中的空單元格
grid-template-areas
已經為元素劃分好了單元格并命名了,接下來可以通過grid-area
在其子元素中關聯(lián)上。.container{ display: grid; grid-template-columns: 100px 100px auto; grid-template-rows: 50px 50px auto; grid-template-areas: "header header header" ". content content" "footer footer footer"; .item6{ grid-area: footer; }}
當然,我們可以僅僅使用grid-area
實現(xiàn)上面需要grid-template-area
和grid-area
才能實現(xiàn)的效果。如下.container{ display: grid; grid-template-columns: 100px 100px auto; grid-template-rows: 50px 50px auto; .item6{ grid-area: 3 / 1 / 4 / 4; }}
grid-area
簡寫的語法是:grid-area: horizontal line to start at / vertical line to start at / horizontal line to end at / vertical line to end at;
grid-template-columns
和grid-template-rows
定義柵格的行列結構。上面我們是一個個定義的。我們也可以使用repeat()
函數(shù)簡化操作。100px
,第三列為1fr
,最后一列是2fr
。.container{ display: grid; grid-template-columns: repeat(2, 100px) 1fr 2fr;}
minmax()
函數(shù)可以輕松做到。.container{ display: grid; grid-template-columns: repeat(2, 100px) minmax(60px, 1fr) 2fr;}
上面的屬性在實際的開發(fā)中已經夠用。如果你還想了解其他的屬性等,你可以點擊下面的參考鏈接進行學習。grid的兼容性還是杠桿的,除了Opera Mini
和Baidu Browser
不支持外,其他的都支持~關鍵詞:布局
微信公眾號
版權所有? 億企邦 1997-2025 保留一切法律許可權利。