Responsives Design
Zuletzt aktualisiert am 10. Februar 2026
In den letzten Artikeln hast du Viewport-Einheiten, Custom Properties und clamp() kennengelernt. All das sind Bausteine für Layouts, die sich an verschiedene Bildschirmgrößen anpassen. Aber das zentrale Werkzeug für responsives Design fehlt noch: Media Queries. Damit kannst du CSS-Regeln schreiben, die nur ab einer bestimmten Bildschirmbreite gelten.
Der Viewport Meta-Tag
Bevor Media Queries funktionieren, braucht dein HTML einen entscheidenden Meta-Tag im <head>:
<meta name="viewport" content="width=device-width, initial-scale=1">width=device-widthsetzt die Seitenbreite auf die Gerätebreiteinitial-scale=1verhindert automatisches Zoomen
Dieser Meta-Tag gehört in jede moderne Website. Ohne ihn greifen Media Queries auf Mobilgeräten nicht wie erwartet.
Media Queries Grundlagen
Eine Media Query ist eine Bedingung, die CSS-Regeln ein- oder ausschaltet. Die häufigste Form prüft die Viewport-Breite:
.box {
background: #dbeafe;
border: 2px solid #1a56db;
}
@media (min-width: 500px) {
.box {
background: #d1fae5;
border-color: #059669;
}
}<div class="box">Ändere die Fenstergröße! Ich bin blau unter 500px und grün ab 500px.</div>Alles innerhalb von @media (min-width: 500px) { ... } gilt nur, wenn der Viewport mindestens 500 Pixel breit ist. Darunter gelten die Basis-Regeln.
Mehrere Bedingungen
Du kannst Bedingungen mit and kombinieren oder mit Komma (,) als “oder” verknüpfen:
/* Zwischen 600px und 900px */
@media (min-width: 600px) and (max-width: 900px) {
.element { font-size: 18px; }
}
/* Hoch- ODER Querformat */
@media (orientation: portrait), (orientation: landscape) {
.element { padding: 16px; }
}
/* Bevorzugt dunkles Farbschema */
@media (prefers-color-scheme: dark) {
body { background: #1f2937; color: #f3f4f6; }
}prefers-color-scheme ist besonders nützlich: Damit reagierst du auf die Systemeinstellung des Nutzers (Dark Mode ein/aus), ohne dass JavaScript nötig ist.
Mobile-First vs. Desktop-First
Es gibt zwei Ansätze, um responsive Layouts aufzubauen:
/* Mobile-First: Basis = Mobile */
.grid {
display: grid;
gap: 8px;
}
/* Ab 500px: zwei Spalten */
@media (min-width: 500px) {
.grid {
grid-template-columns: 1fr 1fr;
}
}<div class="grid grid-mobile-first">
<div class="mobile-first">Spalte 1</div>
<div class="mobile-first">Spalte 2</div>
<div class="mobile-first">Spalte 3</div>
<div class="mobile-first">Spalte 4</div>
</div>Mobile-First (empfohlen)
Du schreibst zuerst das CSS für kleine Bildschirme und erweiterst mit min-width:
/* Basis: Mobile (kein Media Query nötig) */
.nav { display: block; }
/* Tablet */
@media (min-width: 768px) {
.nav { display: flex; }
}
/* Desktop */
@media (min-width: 1024px) {
.nav { gap: 24px; }
}Desktop-First
Du schreibst zuerst das Desktop-CSS und reduzierst mit max-width:
/* Basis: Desktop */
.nav { display: flex; gap: 24px; }
/* Tablet */
@media (max-width: 1023px) {
.nav { gap: 16px; }
}
/* Mobile */
@media (max-width: 767px) {
.nav { display: block; }
}Warum Mobile-First besser ist:
- Mobile Geräte laden weniger CSS (die Basis-Regeln reichen)
- Du baust von einfach zu komplex auf, was zu saubererem Code führt
- Die meisten Nutzer kommen über Mobilgeräte
Gängige Breakpoints
Es gibt keine “richtigen” Breakpoints, aber diese Werte haben sich als Orientierung etabliert:
| Breakpoint | Zielgeräte | Media Query (Mobile-First) |
|---|---|---|
| 640px | Große Smartphones | @media (min-width: 640px) |
| 768px | Tablets | @media (min-width: 768px) |
| 1024px | Kleine Laptops | @media (min-width: 1024px) |
| 1280px | Desktops | @media (min-width: 1280px) |
Wichtig: Wähle Breakpoints nach deinem Design, nicht nach bestimmten Geräten. Wenn dein Layout ab 820px besser zweispaltig aussieht, nimm 820px. Die Tabelle oben ist ein Startpunkt, kein festes Regelwerk.
Fluid Design
Media Queries allein erzeugen “Sprünge”: Bis 767px sieht das Layout so aus, ab 768px anders. Fluid Design sorgt für fließende Übergänge, indem du Viewport-Einheiten und clamp() einsetzt.
.heading {
/* Skaliert von 1.25rem bis 2.5rem */
font-size: clamp(1.25rem, 3vw + 0.5rem, 2.5rem);
}
.container {
width: clamp(300px, 90%, 800px);
padding: clamp(12px, 3vw, 32px);
}<div class="fluid-container">
<div class="fluid-heading">Fluid Heading</div>
<p>Schriftgröße, Container-Breite und Padding skalieren alle fließend mit dem Viewport. Keine harten Sprünge, keine Media Queries nötig.</p>
</div>Hier passiert alles ohne einen einzigen Breakpoint. clamp() sorgt dafür, dass die Werte fließend zwischen Minimum und Maximum skalieren. Das Ergebnis: Ein Layout, das auf 320px Smartphones genauso gut funktioniert wie auf 2560px Ultrawide-Monitoren.
Fluid Design und Media Queries kombinieren
In der Praxis verwendest du beides zusammen. Fluid Design für Schriftgrößen und Abstände, Media Queries für Layout-Änderungen (einspaltiges vs. mehrspaltiges Layout):
.layout {
display: grid;
gap: clamp(12px, 2vw, 24px);
}
@media (min-width: 600px) {
.layout {
grid-template-columns: 1fr 1fr;
}
}
.card {
padding: clamp(12px, 2vw, 20px);
}<div class="page"><div class="layout">
<div class="card">Karte 1: Fluid Padding</div>
<div class="card">Karte 2: Fluid Padding</div>
<div class="card">Karte 3: Fluid Padding</div>
<div class="card">Karte 4: Fluid Padding</div>
</div></div>Die Gap- und Padding-Werte skalieren fließend, während das Grid-Layout bei 600px von einer auf zwei Spalten wechselt.
Responsive Bilder
Bilder können auf kleinen Bildschirmen aus ihrem Container herausragen, wenn sie breiter als der Viewport sind. Die einfachste Lösung:
img {
max-width: 100%;
height: auto;
}<div class="container">
<img class="responsive-img" src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='800' height='200' viewBox='0 0 800 200'><rect fill='%23dbeafe' width='800' height='200'/><text x='400' y='105' text-anchor='middle' font-family='system-ui,sans-serif' font-size='18' fill='%231a56db'>800px breites Bild, passt sich an</text></svg>" alt="Beispielbild">
</div>max-width: 100% sorgt dafür, dass ein Bild nie breiter als sein Container wird, aber bei genug Platz in Originalgröße angezeigt wird. height: auto behält das Seitenverhältnis bei. Diese zwei Zeilen sollten Teil jedes CSS-Resets sein.
Häufige Fehler
- Viewport Meta-Tag vergessen: Ohne
<meta name="viewport" content="width=device-width, initial-scale=1">zeigt der mobile Browser die Desktop-Version an. Media Queries greifen dann nicht wie erwartet. - Breakpoints an Geräten orientieren: “iPhone 14 ist 393px breit” ist kein guter Breakpoint. Setze Breakpoints dort, wo dein Design bricht, nicht wo ein bestimmtes Gerät aufhört.
- Zu viele Breakpoints: Drei bis vier Breakpoints reichen für die meisten Websites. Mehr machen das CSS schwer wartbar.
max-widthundmin-widthmischen: Das führt zu verwirrenden Regeln, die sich gegenseitig überschreiben. Entscheide dich für einen Ansatz (am besten Mobile-First mitmin-width).- Feste Pixel-Breiten für Layouts:
width: 960pxauf einem 360px Smartphone erzeugt einen horizontalen Scrollbalken. Verwende Prozentwerte oderclamp()für Hauptcontainer. - Bilder ohne
max-width: 100%: Große Bilder sprengen auf kleinen Bildschirmen das Layout. Setze die Regel global.
Zusammenfassung
| Konzept | Beschreibung |
|---|---|
| Viewport Meta-Tag | <meta name="viewport" content="width=device-width, initial-scale=1"> |
| Media Query | @media (min-width: 768px) { ... } für bedingte CSS-Regeln |
| Mobile-First | Basis-CSS für Mobile, Erweiterung per min-width (empfohlen) |
| Desktop-First | Basis-CSS für Desktop, Reduktion per max-width |
| Breakpoints | Orientierung: 640px, 768px, 1024px, 1280px (anpassbar) |
| Fluid Design | clamp(), vw, % für fließende Werte ohne Sprünge |
| Responsive Bilder | img { max-width: 100%; height: auto; } |
prefers-color-scheme | Reagiert auf die Dark/Light-Systemeinstellung |
Damit hast du alle CSS-Grundlagen abgeschlossen. Du weißt jetzt, wie CSS funktioniert, wie Selektoren und die Kaskade arbeiten, wie das Box-Modell aufgebaut ist, welche Einheiten und Funktionen es gibt, und wie du Layouts baust, die auf jedem Bildschirm funktionieren. Mit diesem Wissen bist du bereit für die nächsten Schritte: Flexbox, Grid und fortgeschrittene Layout-Techniken.
Bleib auf dem Laufenden
Erhalte neue Inhalte direkt in dein Postfach
Was erwartet dich?
Neue Artikel & Videos
Wenn ich was Neues veröffentliche, erfährst du's hier zuerst.
Plattform & Kurs-Updates
Neue Kurse, Referenz-Updates und gelegentlich Sonderpreise zum Launch.
Einmal die Woche in deinem Postfach
Kurz, auf den Punkt, kein Spam.