歡迎來到《從基礎到輝煌》課程第十講。在本次講座中,我們將深入研究高階 CSS 網格技術。這些技術將使您能夠創建更複雜且響應更快的佈局。在本講座結束時,您將能夠使用網格區域、網格自動放置,並將 CSS 網格與 Flexbox 等其他佈局系統結合。
網格區域可讓您為網格的各個部分指定名稱,從而更輕鬆地管理和視覺化佈局。
HTML:
<div class="grid-container"> <header class="header">Header</header> <aside class="sidebar">Sidebar</aside> <main class="content">Main Content</main> <footer class="footer">Footer</footer> </div>
CSS:
.grid-container { display: grid; grid-template-areas: "header header" "sidebar content" "footer footer"; grid-template-columns: 200px 1fr; grid-template-rows: auto 1fr auto; } .header { grid-area: header; } .sidebar { grid-area: sidebar; } .content { grid-area: content; } .footer { grid-area: footer; }
在此範例中:
CSS 網格具有自動放置功能,可在未明確放置網格項目時自動定位網格項目。您可以使用 grid-auto-flow 來控制其運作方式。
價值觀:
範例:
.grid-container { display: grid; grid-template-columns: repeat(3, 1fr); grid-auto-flow: row dense; /* Auto-places items and packs them densely */ }
在這種情況下,網格項目將逐行放置,較小的項目將填充任何間隙。
minmax() 函數可讓您定義網格軌道的範圍,例如指定網格軌道可以採用的最小和最大尺寸。
.grid-container { display: grid; grid-template-columns: repeat(3, minmax(150px, 1fr)); }
在此範例中:
自動填充和自動調整都用於建立動態網格,但它們的工作方式略有不同:
自動調整:縮小或增加列以適應可用空間。
範例:自動調整和自動填充比較。
.grid-container { display: grid; grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); /* Auto-fill */ } .grid-container-fit { display: grid; grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); /* Auto-fit */ }
兩個選項都會根據可用空間自動調整列數,但自動調整會折疊空列。
雖然 CSS Grid 非常適合建立整體佈局,但 Flexbox 非常適合控制單一專案內的對齊方式。您可以將兩者結合起來處理佈局的不同部分。
HTML:
<div class="grid-container"> <div class="header">Header</div> <div class="content"> <div class="flexbox-item">Item 1</div> <div class="flexbox-item">Item 2</div> </div> <div class="footer">Footer</div> </div>
CSS:
.grid-container { display: grid; grid-template-columns: 1fr; grid-template-rows: auto 1fr auto; } .content { display: flex; justify-content: space-around; align-items: center; } .flexbox-item { padding: 20px; background-color: #ddd; }
在此範例中:
網格可以明確定義(使用 grid-template-columns 和 grid-template-rows)或隱式定義(自動建立新軌道)。
隱式網格:網格會自動建立行或列以容納額外的項目。
範例:
.grid-container { display: grid; grid-template-columns: 100px 100px; grid-auto-rows: 50px; /* Implicitly adds rows */ }
在這種情況下,如果新增的項目多於定義的列,網格將自動建立新行。
讓我們使用 CSS Grid 建立一個帶有頁眉、主要內容區域、側邊欄和頁腳的響應式全頁佈局。
HTML:
<div class="grid-container"> <header class="header">Header</header> <nav class="sidebar">Sidebar</nav> <main class="main-content">Main Content</main> <footer class="footer">Footer</footer> </div>
CSS:
.grid-container { display: grid; grid-template-areas: "header header" "sidebar main" "footer footer"; grid-template-columns: 200px 1fr; grid-template-rows: auto 1fr auto; height: 100vh; /* Full height layout */ } .header { grid-area: header; background-color: #333; color: white; padding: 20px; text-align: center; } .sidebar { grid-area: sidebar; background-color: #f4f4f4; padding: 20px; } .main-content { grid-area: main; padding: 20px; } .footer { grid-area: footer; background-color: #333; color: white; padding: 10px; text-align: center; }
在此範例中:
Next Up: In the next lecture, we’ll explore CSS Positioning and how to position elements using properties like absolute, relative, and fixed. Get ready to enhance your layout control even further!
Ridoy Hasan
以上是高級 CSS 網格技術的詳細內容。更多資訊請關注PHP中文網其他相關文章!