CSS @media-Regel
Mit der @media-Regel Stile basierend auf Media Queries anwenden. Lernen Sie die Verwendung anhand von Beispielen.
Die @media-Regel wendet einen Stilblock nur dann an, wenn eine Media Query den Wert true ergibt — zum Beispiel nur bei Bildschirmen, die schmaler als ein Smartphone sind, oder nur wenn ein Dokument gedruckt wird. Sie ist die Grundlage des Responsive Webdesigns: Ein einziges Stylesheet, das sich an Desktops, Laptops, Tablets und Mobiltelefone anpasst, anstatt für jedes Gerät eine separate Website bereitzustellen.
Diese Seite behandelt die @media-Syntax, die verfügbaren Media Types und Media Features, die Verknüpfung von Bedingungen mit logischen Operatoren sowie ausführbare Beispiele, deren Effekte Sie durch Ändern der Fenstergröße beobachten können.
Aufbau einer Media Query
Eine Media Query besteht aus zwei Teilen:
- Einem optionalen Media Type —
all,print,screenoderspeech— der eine Gerätekategorie anspricht. - Einem oder mehreren Media Features in Klammern, wie
(min-width: 768px), die eine Bedingung prüfen, etwa diewidthdes viewport, seineheight, Ausrichtung oder Auflösung.
Wenn der Media Type mit dem aktuellen Gerät übereinstimmt und jedes Feature den Wert true ergibt, werden die Stile im Block angewendet. Ein Media Feature sieht aus wie eine CSS-Eigenschaft (name: value), prüft jedoch eine Bedingung, anstatt ein Element direkt zu gestalten.
Wann würde ich das verwenden? Immer dann, wenn sich Layout, Abstände oder Sichtbarkeit je nach Gerät ändern sollen — Spalten auf Smartphones stapeln, eine Seitenleiste auf kleinen Bildschirmen ausblenden oder Hintergrundfarben beim Drucken einer Seite entfernen.
In JavaScript repräsentiert das CSSMediaRule-Interface eine einzelne @media-Regel und kann verwendet werden, um mit @media erstellte Regeln zu lesen oder zu ändern.
Syntax
CSS @media
@media <media-query> {
/* styles */
}Media Queries können mehrere Bedingungen mithilfe logischer Operatoren kombinieren: and, not, only und ein Komma (,).
Beispiel der @media-Regel:
CSS @media code example
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
body {
background-color: #1c87c9;
}
@media screen and (max-width: 411px) {
body {
background-color: #cce5ff;
}
}
@media screen and (min-width: 768px) {
body {
background-color: #eee;
}
}
@media screen and (max-width: 962px) and (min-width: 450px),
(min-width: 1366px) {
body {
background-color: #333;
}
}
</style>
</head>
<body>
<h2>@media rule example</h2>
<p>Resize the browser to see the effect.</p>
<p>The background color changes based on the viewport width: light blue for screens up to 411px, light gray for 768px and wider, and dark gray for screens between 450px and 962px, or 1366px and wider.</p>
</body>
</html>Ergebnis
Im folgenden Beispiel ändert sich das Erscheinungsbild des <div>, wenn die Browserbreite zwischen 500 und 800 px oder über 1000 px liegt. Ändern Sie die Größe des Browserfensters, um den Effekt zu sehen.
Beispiel der @media-Regel mit geändertem Erscheinungsbild von <div>:
CSS @media multiple queries example
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
body {
background-color: #1c87c9;
}
@media screen and (min-width: 200px) {
body {
background-color: #8ebf42;
}
}
@media screen and (min-width: 600px) {
body {
background-color: #ccc;
}
}
@media screen and (max-width: 800px) and (min-width: 500px),
(min-width: 1000px) {
div.box {
font-size: 50px;
padding: 50px;
border: 8px solid #000;
background: #eee;
}
}
</style>
</head>
<body>
<h2>@media rule example</h2>
<p>Media queries set the background-color to grey if the viewport is 600 pixels wide or wider, to green if the viewport is between 200 and 599 pixels wide. If the viewport is smaller than 200 pixels, the background-color is blue.</p>
<h3>Change the appearance of DIV on different screen sizes</h3>
<div class="box">DIV</div>
</body>
</html>Bedingungen mit logischen Operatoren kombinieren
Media Queries können mehrere Bedingungen verknüpfen:
and— alle Bedingungen müssen zutreffen:@media screen and (min-width: 768px).,(Komma) — wirkt wieor; die Stile werden angewendet, wenn irgendeine kommagetrennte Query zutrifft:@media (max-width: 600px), (min-width: 1200px).not— negiert eine gesamte Query:@media not all and (monochrome).only— verbirgt die Query vor sehr alten Browsern, die Media Features nicht verstehen; in modernen Browsern hat es keinen Effekt, schadet aber nicht.
Media Types
| Wert | Beschreibung |
|---|---|
| all | Dieser Wert wird für alle Geräte verwendet. Dies ist der Standardwert dieser Eigenschaft. |
| Wird für Drucker verwendet. | |
| screen | Wird für Farbbildschirme verwendet. |
| speech | Wird für Sprachausgabe verwendet. |
Beispiel zur Verwendung von media zum Ausblenden eines Elements auf sehr kleinen Geräten:
CSS @media Rule
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
<style>
@media (max-width: 767px) {
.hide-mobile {
display: none;
}
}
</style>
</head>
<body>
<h1>Hi</h1>
<p>There is some text for example.</p>
<p class="hide-mobile">This text will be hidden on large devices.</p>
<p>There is some text for example.</p>
</body>
</html>Beispiel zur Verwendung von media zum Ändern der Hintergrundfarbe des Inhalts auf verschiedenen Geräten.
CSS @media Rule
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
@media screen and (max-width: 767px) {
.content {
background-color: lightblue;
padding: 30px;
}
}
@media screen and (min-width: 768px) {
.content {
background-color: pink;
padding: 10px;
}
}
@media screen and (min-width: 800px) {
.content {
background-color: lightgreen;
color: white;
padding: 50px;
}
}
</style>
</head>
<body>
<div class="content">
<h2>Resize the browser to see the effect.</h2>
<p>
CSS is a rule-based language, which means that you define
rules specifying groups of styles applying to particular
elements or groups of elements on the web page.
</p>
</div>
</body>
</html>Media Features
Media Features prüfen eine bestimmte Eigenschaft des Geräts oder viewport. Bei weitem am häufigsten im alltäglichen Responsive Design sind width-basierte Features — min-width und max-width — aber die vollständige Liste unten deckt alles ab, von der Geräteausrichtung bis hin zu Farbtiefe und Eingabemechanismus. Bereichs-Features (width, height, aspect-ratio, color, resolution, monochrome) akzeptieren auch min-- und max--Präfixe.
| Wert | Beschreibung |
|---|---|
| width | Die Breite des viewport. |
| height | Die Höhe des viewport. |
| orientation | Die Ausrichtung des viewport. |
| aspect-ratio | Das Verhältnis des Werts des Media Features "width" zum Wert des Media Features "height". |
| grid | Prüft, ob das Ausgabegerät ein Raster- oder Bitmap-Gerät ist. |
| color | Die Anzahl der Bits pro Farbkomponente des Ausgabegeräts. Wenn das Gerät kein Farbgerät ist, ist der Wert 0. |
| color-gamut | Der ungefähre Bereich der Farben, die vom User-Agent und Ausgabegerät unterstützt werden. |
| inverted-colors | Prüft, ob der Browser oder das zugrundeliegende Betriebssystem Farben invertiert oder nicht. |
| hover | Prüft, ob der primäre Eingabemechanismus dem Benutzer erlaubt, über Elemente zu hovern oder nicht. |
| any-hover | Prüft, ob der verfügbare Eingabemechanismus dem Benutzer erlaubt, über Elemente zu hovern oder nicht. |
| any-pointer | Prüft, ob der verfügbare Eingabemechanismus ein Zeigegerät ist oder nicht. |
| light-level | Der Umgebungslichtstärke. |
| max-aspect-ratio | Das maximale Verhältnis zwischen Breite und Höhe des Anzeigebereichs. |
| max-color | Die maximale Anzahl von Bits pro Farbkomponente für das Ausgabegerät. |
| max-height | Die maximale Höhe des Anzeigebereichs. |
| max-monochrome | Die maximale Anzahl von Bits pro Farbe auf einem Monochrom-Gerät. |
| max-resolution | Die maximale Auflösung des Geräts. |
| max-width | Die maximale Breite des Anzeigebereichs. |
| min-aspect-ratio | Das minimale Verhältnis zwischen Breite und Höhe des Anzeigebereichs. |
| min-color | Die minimale Anzahl von Bits pro Farbkomponente für das Ausgabegerät. |
| min-height | Die minimale Höhe des Anzeigebereichs. |
| min-monochrome | Die minimale Anzahl von Bits pro Farbe auf einem Monochrom-Gerät. |
| min-resolution | Die minimale Auflösung des Geräts. |
| min-width | Die minimale Breite des Anzeigebereichs. |
| overflow-block | Prüft, wie das Ausgabegerät Inhalte behandelt, die den viewport entlang der Blockachse überlaufen. |
| overflow-inline | Prüft, ob Inhalte, die den viewport entlang der Inline-Achse überlaufen, gescrollt werden können oder nicht. |
| pointer | Prüft, ob der primäre Eingabemechanismus ein Zeigegerät ist oder nicht. |
| resolution | Beschreibt die Auflösung des Ausgabegeräts. |
| scripting | Prüft, ob Scripting verfügbar ist oder nicht. |
| update | Prüft, wie schnell das Ausgabegerät das Erscheinungsbild des Inhalts ändern kann. |