Willkommen zur zehnten Vorlesung des Kurses „Basic to Brilliance“. In dieser Vorlesung werden wir tiefer in fortgeschrittene CSS-Grid-Techniken eintauchen. Mit diesen Techniken können Sie noch komplexere und reaktionsfähigere Layouts erstellen. Am Ende dieser Vorlesung werden Sie in der Lage sein, mit Rasterbereichen und automatischer Rasterplatzierung zu arbeiten und CSS Grid mit anderen Layoutsystemen wie Flexbox zu kombinieren.
Rasterbereiche ermöglichen es Ihnen, Abschnitten Ihres Rasters Namen zuzuweisen, was die Verwaltung und Visualisierung Ihres Layouts erleichtert.
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; }
In diesem Beispiel:
CSS Grid verfügt über eine automatische Platzierungsfunktion, die Rasterelemente automatisch positioniert, wenn sie nicht explizit platziert werden. Sie können steuern, wie dies funktioniert, indem Sie Grid-Auto-Flow verwenden.
Werte:
Beispiel:
.grid-container { display: grid; grid-template-columns: repeat(3, 1fr); grid-auto-flow: row dense; /* Auto-places items and packs them densely */ }
In diesem Fall werden Rasterelemente Reihe für Reihe platziert und kleinere Elemente füllen etwaige Lücken.
Mit der Funktion minmax() können Sie einen Bereich für Rasterspuren definieren, beispielsweise die Angabe der minimalen und maximalen Größe, die eine Rasterspur annehmen kann.
.grid-container { display: grid; grid-template-columns: repeat(3, minmax(150px, 1fr)); }
In diesem Beispiel:
Sowohl automatisches Ausfüllen als auch automatische Anpassung werden zum Erstellen dynamischer Raster verwendet, sie funktionieren jedoch etwas anders:
Auto-Fit: Verkleinert oder vergrößert die Spalten, um sie an den verfügbaren Platz anzupassen.
Beispiel: Auto-Fit- und Auto-Fill-Vergleich.
.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 */ }
Beide Optionen passen die Anzahl der Spalten automatisch an den verfügbaren Platz an, aber durch die automatische Anpassung werden leere Spalten ausgeblendet.
Während sich CSS Grid hervorragend zur Strukturierung des Gesamtlayouts eignet, eignet sich Flexbox perfekt zur Steuerung der Ausrichtung innerhalb einzelner Elemente. Sie können beides kombinieren, um verschiedene Teile Ihres Layouts zu bearbeiten.
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; }
In diesem Beispiel:
Raster können explizit (mithilfe von Grid-Template-Columns und Grid-Template-Rows) oder implizit (wobei neue Tracks automatisch erstellt werden) definiert werden.
Implizites Raster: Das Raster erstellt automatisch Zeilen oder Spalten, um zusätzliche Elemente aufzunehmen.
Beispiel:
.grid-container { display: grid; grid-template-columns: 100px 100px; grid-auto-rows: 50px; /* Implicitly adds rows */ }
In diesem Fall erstellt das Raster automatisch neue Zeilen, wenn mehr Elemente hinzugefügt werden, als in die definierten Spalten passen.
Lassen Sie uns CSS Grid verwenden, um ein responsives ganzseitiges Layout mit einer Kopfzeile, einem Hauptinhaltsbereich, einer Seitenleiste und einer Fußzeile zu erstellen.
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; }
In diesem Beispiel:
下一步: 在下一課中,我們將探索 CSS 定位 以及如何使用絕對、相對和固定等屬性來定位元素。準備好進一步增強您的佈局控制!
裡多伊‧哈桑
Das obige ist der detaillierte Inhalt vonFortgeschrittene CSS-Grid-Techniken. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!