@media
@media [Typ] [and] (Bedingung) { … }
Die Stile darin gelten nur, wenn Gerät und Fenster die Bedingung erfüllen. Die Grundlage einer responsiven Website: @media (min-width: 700px) { … } ergänzt ein Layout für breitere Bildschirme. Bedingungen lassen sich kombinieren und verschachteln; der Browser wertet sie bei jeder Änderung des Fensters neu aus.
Werte
- Typ –
screen,print,all(Standard). - (width >= 600px), (400px <= width < 800px) – Bereichssyntax; Chrome ab 104, Firefox ab 102, Safari ab 16.4. Die ältere Syntax:
(min-width: 600px),(max-width: 799px). - (orientation: landscape), (aspect-ratio > 16/9) – die Form des Fensters.
- (hover: hover), (pointer: coarse) – Maus oder Touch.
- (prefers-color-scheme: dark), (prefers-reduced-motion: reduce), (prefers-contrast: more), (forced-colors: active) – Einstellungen des Nutzers.
- (resolution >= 2x) – die Pixeldichte des Displays.
- and, ein Komma (oder), not, or innerhalb einer Bedingung (Chrome ab 104, Firefox ab 64, Safari ab 16.4).
Beispiele
Mobile First: Auf einem schmalen Bildschirm stehen die Karten untereinander, ab 700 px in zwei Spalten:
.cards {
display: grid;
gap: 16px;
}
@media (width >= 700px) {
.cards {
grid-template-columns: 1fr 1fr;
}
}
Das Ergebnis: Bei einer Fensterbreite unter 700 px stehen die Karten in einer Spalte, ab 700 px in zwei.
Beim Drucken verschwinden Menü und Fußzeile, der Text ist schwarz auf Weiß:
@media print {
nav,
footer,
.ad { display: none; }
body {
background: #fff;
color: #000;
}
}
Worauf Sie achten sollten
- Auf dem Handy muss die Seite im Kopf
<meta name="viewport" content="width=device-width, initial-scale=1">haben, sonst gibt sie sich als etwa 980 px breit aus und die Bedingungen für die Breite greifen nicht. emundremin einer Bedingung werden von der Standardschriftgröße des Browsers berechnet (meist 16 px), nicht von der im CSS gesetztenfont-size.- Die Grenzen überschneiden sich leicht:
(max-width: 700px)und(min-width: 700px)gelten bei einer Breite von genau 700 px beide. Die Bereichssyntax (width < 700pxundwidth >= 700px) löst das. - In einer Bedingung funktioniert
var()nicht. Regeln in@mediahaben keine höhere Priorität – bei gleicher Spezifität entscheidet die Reihenfolge, schreiben Sie sie also nach den Grundstilen. - Nach der Größe der umgebenden Komponente statt des Fensters entscheidet
@container.
Browserunterstützung
Baseline – weithin verfügbar: funktioniert in allen gängigen Browsern, und das schon lange (spätestens seit 2015). Ab Version: Chrome 1, Firefox 1, Safari 3. Stand: Oktober 2026 (MDN browser-compat-data).
Siehe auch:
@container
prefers-color-scheme
prefers-reduced-motion
@supports
:hover
Längeneinheiten (px, em, rem, %, vw…)