In diesem Beitrag werden verschiedene Methoden zum Erstellen einer reaktionsfähigen, horizontal verteilten Kartenliste mithilfe von CSS Flexbox und Grid untersucht. Wir werden uns der Herausforderung stellen, eine einheitliche Kartengröße und einen einheitlichen Abstand über verschiedene Bildschirmgrößen hinweg beizubehalten.
Inhaltsverzeichnis
flex-grow
und flex-basis
Die Herausforderung
Galerie- oder Listenkomponenten erfordern häufig eine Anpassung der Karten (Artikel, Produkte, Bilder) an die Breite des Containers. Die Größe jeder Karte sollte proportional geändert werden, wobei Höhe, Breite und Abstand gleich bleiben. Das Layout sollte sich nahtlos über verschiedene Bildschirmgrößen erstrecken.
Eine grundlegende HTML-Struktur und minimales CSS könnten zunächst zu einer ungleichmäßigen Kartenverteilung führen:
CSS Flexbox: Eine flexible Kartenliste
Flexbox bietet einen unkomplizierten Ansatz. flex-wrap: wrap
ermöglicht den Umbruch in neue Zeilen und gap
steuert den Abstand:
<code class="language-css">.list-items { display: flex; flex-wrap: wrap; gap: 10px; }</code>
Dies ergibt einen horizontalen Fluss:
Das Festlegen einer festen Breite für .item
(width: 100px;
) verhindert jedoch, dass Karten erweitert werden, um den verfügbaren Platz auszufüllen, wodurch Lücken entstehen:
Die Verwendung von justify-content
-Eigenschaften (wie space-between
, space-around
usw.) löst das Problem der gleichmäßigen Verteilung nicht perfekt:
Gleichmäßige Kartenverteilung mit flex-grow
und flex-basis
flex-basis
legt die anfängliche Kartengröße fest, während flex-grow: 1
(oder flex: 1
) ein proportionales Wachstum ermöglicht:
<code class="language-css">.item { /* other styles */ flex: 1; flex-basis: 100px; }</code>
Dies verbessert die Verteilung, aber die letzte Karte kann sich dennoch ungleichmäßig ausdehnen:
CSS Grid: Eine reaktionsfähige Lösung
CSS Grid bietet eine robustere Lösung. display: grid
und gap
werden ähnlich wie Flexbox verwendet:
<code class="language-css">.list-items { display: flex; flex-wrap: wrap; gap: 10px; }</code>
Für die Reaktionsfähigkeit ist grid-template-columns
mit auto-fit
, minmax()
und repeat()
der Schlüssel:
<code class="language-css">.item { /* other styles */ flex: 1; flex-basis: 100px; }</code>
Dadurch wird ein vollständig responsives Layout erstellt:
Zusammenfassung
Sowohl Flexbox als auch Grid bieten leistungsstarke Layoutfunktionen. Flexbox zeichnet sich durch eindimensionale Layouts aus, während Grid durch zweidimensionale Steuerung glänzt. Die Wahl des richtigen Werkzeugs hängt von den spezifischen Designanforderungen ab.
Viel Spaß beim Codieren! ?
? Erfahren Sie mehr über Vue 3 und TypeScript mit meinem neuen Buch Learning Vue!
? Verbinden Sie sich mit mir auf X | LinkedIn.
Gefällt Ihnen dieser Beitrag? Teilt es! ?? ?
Das obige ist der detaillierte Inhalt vonFlexible Layouts beherrschen: CSS Flexbox VS Grid für Responsive Design. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!