Hallo! ? Nachdem ich unzählige Stunden damit verbracht habe, Entwicklern beim Debuggen ihrer CSS-Layouts zu helfen, ist mir aufgefallen, dass wir alle die gleichen Kämpfe führen. Lassen Sie uns das heute mit einigen kampferprobten CSS-Lösungen beheben, die tatsächlich in der Produktion funktionieren.
Wir waren alle dort. Sie finden ein CSS-Tutorial, kopieren den Code und plötzlich:
Kommt Ihnen das bekannt vor? Lassen Sie uns diese Probleme ein für alle Mal beheben.
Befassen wir uns zunächst mit dem gängigsten Layout: Kopfzeile, scrollbarer Inhalt und Fußzeile. Das wollen wir:
Hier ist die Lösung:
.app { display: grid; grid-template-rows: auto 1fr auto; min-height: 100vh; gap: 1rem; } .header { position: sticky; top: 0; background: white; z-index: 10; } .footer { background: #f5f5f5; } .content { /* Prevent content from getting stuck under header */ padding-top: var(--safe-padding, 1rem); overflow-y: auto; }
<div> <p>Why this works:</p> <ul> <li>Grid's 1fr handles the space distribution automatically</li> <li>Sticky header stays visible while scrolling</li> <li>Content scrolls independently</li> <li>Footer always stays at the bottom</li> </ul> <h2> 2. The "Works Everywhere" Card Grid </h2> <p>Need cards that look good no matter how many you have? This solution handles everything from 1 to 100 cards:<br> </p> <pre class="brush:php;toolbar:false">.card-container { --min-card-width: 300px; display: grid; grid-template-columns: repeat( auto-fit, minmax(min(var(--min-card-width), 100%), 1fr) ); gap: clamp(1rem, 2vw, 2rem); padding: clamp(1rem, 2vw, 2rem); } .card { display: flex; flex-direction: column; height: 100%; padding: 1rem; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); } .card-content { flex: 1; /* Takes up remaining space */ } .card-footer { margin-top: auto; /* Pushes footer to bottom */ }
Was das Besondere daran macht:
Ist Ihnen schon einmal aufgefallen, wie schwierig es ist, Text zu lesen, der sich über die gesamte Breite eines Breitbildschirms erstreckt? So beheben Sie das Problem:
.content-wrapper { --content-width: 65ch; --padding: clamp(1rem, 5vw, 3rem); width: min(var(--content-width), 100%); margin-inline: auto; padding-inline: var(--padding); } .text-content { font-size: clamp(1rem, 1rem + 0.5vw, 1.25rem); line-height: 1.6; } /* For full-width backgrounds with contained content */ .full-width { width: 100%; padding-inline: var(--padding); } .full-width > * { width: min(var(--content-width), 100%); margin-inline: auto; }
Warum Entwickler das lieben:
/* Add this to your dev environment */ * { outline: 1px solid rgba(255,0,0,0.1); }
Dies hilft, Layoutprobleme frühzeitig zu erkennen.
/* Start here */ .element { flex-direction: column; gap: 1rem; } /* Then enhance */ @media (min-width: 768px) { .element { flex-direction: row; } }
:root { --spacing-unit: 0.5rem; --padding-sm: calc(var(--spacing-unit) * 2); --padding-md: calc(var(--spacing-unit) * 4); --padding-lg: calc(var(--spacing-unit) * 8); }
Der beste Weg zu lernen ist, indem man es tut. Nehmen Sie diese Schnipsel und probieren Sie sie in Ihrem Projekt aus. Beginnen Sie mit dem App-Layout – es ist die Grundlage, auf der alles andere aufbaut.
Haben Sie Fragen? Haben Sie eine Möglichkeit gefunden, diese Muster zu verbessern? Schreiben Sie unten einen Kommentar! Normalerweise antworte ich innerhalb von 24 Stunden.
Wenn Ihnen das geholfen hat, denken Sie darüber nach:
Das obige ist der detaillierte Inhalt vonModerne CSS-Layouts, die tatsächlich funktionieren: Ein Entwicklerhandbuch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!