CSS網格佈局
這一部分詳細介紹了網格佈局的用法。
通過設定父元素來搭建整體結構
- 父元素設定為
display: grid
-
grid-template-rows
和grid-template-columns
來設定有多少行/列,每行/列的寬高是多少,如grid-template-rows: 50px 50px
即總共兩行,每行高50px- 每行/列的寬高可以設定為px,em這類固定長度單位,也可以設定為百分比,或者auto自適應,以及fr(fr是CSS3加入的新的長度單位,是一個自適應單位,表示按比例分配剩餘空間,如
grid-template-rows: 1fr 1fr 1fr
即總共3行,每行高度為父元素高度的1/3) - 如果有多行內容,且寬高設定重複,可以使用repeat來設定,如
grid-template-rows: repeat(100, 50px)
即有100行,每行高度50px - 當使用repeat設定多行/列內容的寬高時,可以限制單個網格的寬高來實現響應式佈局
- 使用
minmax
來限制最大最小值,例:grid-template-rows: repeat(3, minmax(30px 100px))
- 使用
autofill
或autofit
來規定父元素寬高大於子元素之和時,子元素的大小是否隨著父元素變化(autofill
表示使用空元素補充多餘空間,子元素大小不變;autofit
表示子元素寬度按比例變化,撐滿父元素)
- 使用
- 每行/列的寬高可以設定為px,em這類固定長度單位,也可以設定為百分比,或者auto自適應,以及fr(fr是CSS3加入的新的長度單位,是一個自適應單位,表示按比例分配剩餘空間,如
-
grid-column-gap
和grid-row-gap
用於規定行/列之間的距離,也可以通過grid-gap
一次性設定 -
justify-items
和align-items
設定所有元素在列/行上如何對齊,相當於設定所有元素的justify-self
和align-self
屬性
通過設定子元素來調整單個網格的佈局
- 除了通過設定父元素的
grid-template-rows
和grid-template-columns
來確定單個網格的寬高,還可以通過設定單個網格的grid-column
和grid-row
來確定寬高,如grid-column:1/3
表示網格寬度從表示列的第一根線條(即最左側線條)開始,到第三條線條(第二個網格右邊的線條)結束 -
justify-self
和align-self
兩個屬性分別規定單個網格沿列和行在網格中的內容對齊方式,預設屬性均為stretch,即佔滿網格區域,其他值包括start, end, center
對網格的位置進行佈局
- 可以設定父元素的
grid-template-areas
,即作為目標設定每一行的每一列均為什麼內容,可以對這一內容進行命名,通過設定子元素的grid-area
來讓子元素對應到父元素中的理想位置,如
grid-template-areas:
"header header header"
"advert content content"
"footer footer footer";
- 也可以不通過命名模板來設定單個網格的佈局,即通過設定網格上下左右四根線條對應的橫向和縱向起始線條來確定網格的位置和寬高,如`grid-area: 1/1/2/4"即高度從橫向第一根線條開始,到第2根線條結束,寬度從縱向第一根線條開始,到第4根線條結束
以下是這一部分習題的解答:
Introduction to the CSS Grid Challenges
-
<style> .container { font-size: 40px; width: 100%; background: LightGray; /* add your code below this line */ display: grid; /* add your code above this line */ } </style>
-
Add Columns with grid-template-columns
<style> .container { font-size: 40px; width: 100%; background: LightGray; display: grid; /* add your code below this line */ grid-template-columns: 100px 100px 100px; /* add your code above this line */ } </style>
-
Add Rows with grid-template-rows
<style> .container { font-size: 40px; width: 100%; background: LightGray; display: grid; grid-template-columns: 100px 100px 100px; /* add your code below this line */ grid-template-rows: 50px 50px; /* add your code above this line */ } </style>
-
Use CSS Grid units to Change the Size of Columns and Rows
<style> .container { font-size: 40px; width: 100%; background: LightGray; display: grid; /* modify the code below this line */ grid-template-columns: 1fr 100px 2fr; /* modify the code above this line */ grid-template-rows: 50px 50px; } </style>
-
Create a Column Gap Using grid-column-gap
<style> .container { font-size: 40px; min-height: 300px; width: 100%; background: LightGray; display: grid; grid-template-columns: 1fr 1fr 1fr; grid-template-rows: 1fr 1fr 1fr; /* add your code below this line */ grid-column-gap: 20px; /* add your code above this line */ } </style>
-
Create a Row Gap using grid-row-gap
<style> .container { font-size: 40px; min-height: 300px; width: 100%; background: LightGray; display: grid; grid-template-columns: 1fr 1fr 1fr; grid-template-rows: 1fr 1fr 1fr; /* add your code below this line */ grid-row-gap: 5px; /* add your code above this line */ } </style>
-
<style> .container { font-size: 40px; min-height: 300px; width: 100%; background: LightGray; display: grid; grid-template-columns: 1fr 1fr 1fr; grid-template-rows: 1fr 1fr 1fr; /* add your code below this line */ grid-gap: 10px 20px; /* add your code above this line */ } </style>
-
Use grid-column to Control Spacing
<style> .item5 { background: PaleGreen; /* add your code below this line */ grid-column: 2/4; /* add your code above this line */ } </style>
-
Use grid-row to Control Spacing
<style> .item5 { background: PaleGreen; grid-column: 2 / 4; /* add your code below this line */ grid-row: 2/4; /* add your code above this line */ } </style>
-
Align an Item Horizontally using justify-self
<style> .item2 { background: LightSalmon; /* add your code below this line */ justify-self: center; /* add your code above this line */ } </style>
-
Align an Item Vertically using align-self
<style> .item3 { background: PaleTurquoise; /* add your code below this line */ align-self: end; /* add your code above this line */ } </style>
-
Align All Items Horizontally using justify-items
<style> .container { font-size: 40px; min-height: 300px; width: 100%; background: LightGray; display: grid; grid-template-columns: 1fr 1fr 1fr; grid-template-rows: 1fr 1fr 1fr; grid-gap: 10px; /* add your code below this line */ justify-items: center; /* add your code above this line */ } </style>
-
Align All Items Vertically using align-items
<style> .container { font-size: 40px; min-height: 300px; width: 100%; background: LightGray; display: grid; grid-template-columns: 1fr 1fr 1fr; grid-template-rows: 1fr 1fr 1fr; grid-gap: 10px; /* add your code below this line */ align-items: end; /* add your code above this line */ } </style>
-
Divide the Grid Into an Area Template
<style> .container { font-size: 40px; min-height: 300px; width: 100%; background: LightGray; display: grid; grid-template-columns: 1fr 1fr 1fr; grid-template-rows: 1fr 1fr 1fr; grid-gap: 10px; /* change code below this line */ grid-template-areas: "header header header" ". content content" "footer footer footer"; /* change code above this line */ } </style>
-
Place Items in Grid Areas Using the grid-area Property
<style> .item5 { background: PaleGreen; /* add your code below this line */ grid-area: footer; /* add your code above this line */ } </style>
-
Use grid-area Without Creating an Areas Template
<style> .item5 { background: PaleGreen; /* add your code below this line */ grid-area:3/1/4/4; /* add your code above this line */ } </style>
-
Reduce Repetition Using the repeat Function
<style> .container { font-size: 40px; min-height: 300px; width: 100%; background: LightGray; display: grid; /* change the code below this line */ grid-template-columns: repeat(3, 1fr);; /* change the code above this line */ grid-template-rows: 1fr 1fr 1fr; grid-gap: 10px; } </style>
-
Limit Item Size Using the minmax Function
<style> .container { font-size: 40px; min-height: 300px; width: 100%; background: LightGray; display: grid; /* change the code below this line */ grid-template-columns: repeat(3, minmax(90px, 1fr)); /* change the code above this line */ grid-template-rows: 1fr 1fr 1fr; grid-gap: 10px; } </style>
-
Create Flexible Layouts Using auto-fill
<style> .container { font-size: 40px; min-height: 100px; width: 100%; background: LightGray; display: grid; /* change the code below this line */ grid-template-columns: repeat(auto-fill, minmax(60px, 1fr)); /* change the code above this line */ grid-template-rows: 1fr 1fr 1fr; grid-gap: 10px; } </style>
-
Create Flexible Layouts Using auto-fit
<style> .container2 { font-size: 40px; min-height: 100px; width: 100%; background: Silver; display: grid; /* change the code below this line */ grid-template-columns: repeat(auto-fit, minmax(60px, 1fr)); /* change the code above this line */ grid-template-rows: 1fr 1fr 1fr; grid-gap: 10px; } </style>
-
Use Media Queries to Create Responsive Layouts
<style> @media (min-width: 400px){ .container{ /* change the code below this line */ grid-template-areas: "header header" "advert content" "footer footer"; /* change the code above this line */ } } </style>
-
<style> .item3 { background: PaleTurquoise; grid-area: content; /* enter your code below this line */ display:grid; grid-template-column: auto 1fr; /* enter your code above this line */ } </style>
相關文章
- CSS Grid 網格佈局教程CSS
- css網格佈局的最佳實踐CSS
- CSS Grid 網格佈局邊框設定CSS
- 【圖片版】學習CSS網格佈局CSS
- 【圖片版】CSS網格佈局(Grid)完全教程CSS
- CSS Grid 網格佈局實現自適應9宮格CSS
- grid網格佈局
- GridPane網格佈局
- 哈?原來css網格佈局這麼簡單!!!CSS
- css佈局-float佈局CSS
- CSS佈局 --- 居中佈局CSS
- CSS自定義屬性+CSS Grid網格實現超級的佈局能力CSS
- [譯] 使用 CSS 網格佈局實現響應式圖片CSS
- [譯] 簡單的響應式現代 CSS 網格佈局CSS
- 【css】佈局CSS
- css 佈局CSS
- CSS佈局CSS
- 網格佈局管理器
- CSS佈局之三欄佈局CSS
- CSS佈局 --- 自適應佈局CSS
- CSS佈局 --- 等寬&等高佈局CSS
- CSS 佈局之水平居中佈局CSS
- css網頁的幾種佈局CSS網頁
- Flutter網格型佈局 - GridView篇FlutterView
- CSS 佈局模式CSS模式
- CSS 佈局模型CSS模型
- css佈局方法CSS
- css flex佈局CSSFlex
- CSS Grid 佈局CSS
- css佈局系列1——盒模型佈局CSS模型
- 通過生成內容和CSS網格佈局為空單元格新增樣式CSS
- CSS 兩欄佈局和三欄佈局CSS
- CSS經典佈局——聖盃佈局與雙飛翼佈局CSS
- css居中與佈局CSS
- CSS 傳統佈局CSS
- CSS之居中佈局CSS
- css頁面佈局CSS
- CSS:兩欄佈局CSS