Suche…


Syntax

  • @media [nicht | nur] Mediatyp und (Medienfunktion) {/ * CSS-Regeln, die * /} gelten

Parameter

Parameter Einzelheiten
mediatype (Optional) Dies ist der Medientyp. Könnte alles im Bereich von all zu screen .
not (Optional) Wendet CSS für diesen bestimmten Medientyp nicht an und gilt für alles andere.
media feature Logik zur Identifizierung des Anwendungsfalls für CSS. Optionen unten beschrieben.
Medienfunktion Einzelheiten
aspect-ratio Beschreibt das Seitenverhältnis des Zielanzeigebereichs des Ausgabegeräts.
color Gibt die Anzahl der Bits pro Farbkomponente des Ausgabegeräts an. Wenn das Gerät kein Farbgerät ist, ist dieser Wert Null.
color-index Gibt die Anzahl der Einträge in der Farbnachschlagetabelle für das Ausgabegerät an.
grid Bestimmt, ob das Ausgabegerät ein Grid-Gerät oder ein Bitmap-Gerät ist.
height Die Höhenmedienfunktion beschreibt die Höhe der Rendering-Oberfläche des Ausgabegeräts.
max-width CSS wird nicht auf eine Bildschirmbreite angewendet, die breiter als angegeben ist.
min-width CSS wird nicht auf eine Bildschirmbreite angewendet, die schmaler als angegeben ist.
max-height CSS wird nicht auf einer Bildschirmhöhe angewendet, die höher als angegeben ist.
min-height CSS wird nicht auf einer Bildschirmhöhe angewendet, die kürzer ist als angegeben.
monochrome Gibt die Anzahl der Bits pro Pixel auf einem Monochromgerät (Graustufen) an.
orientation CSS wird nur angezeigt, wenn das Gerät die angegebene Ausrichtung verwendet. Weitere Informationen finden Sie in den Anmerkungen.
resolution Gibt die Auflösung (Pixeldichte) des Ausgabegeräts an.
scan Beschreibt den Scanvorgang von Fernsehausgabegeräten.
width Die Medienbreite-Funktion beschreibt die Breite der Rendering-Oberfläche des Ausgabegeräts (z. B. die Breite des Dokumentfensters oder die Breite des Seitenrahmens eines Druckers).
Veraltete Funktionen Einzelheiten
device-aspect-ratio Deprecated CSS wird nur auf Geräten angezeigt, deren Höhen- / Breitenverhältnis dem angegebenen Verhältnis entspricht. Dies ist eine deprecated Funktion und es kann nicht garantiert werden, dass sie funktioniert.
max-device-width Deprecated Entspricht der max-width , misst jedoch die physische Bildschirmbreite und nicht die Anzeigebreite des Browsers.
min-device-width Deprecated Entspricht min-width , misst jedoch die physische Bildschirmbreite und nicht die Anzeigebreite des Browsers.
max-device-height Deprecated Entspricht der max-height , misst jedoch die physische Bildschirmbreite und nicht die Anzeigebreite des Browsers.
min-device-height Deprecated Wie min-height , misst jedoch die physische Bildschirmbreite und nicht die Anzeigebreite des Browsers.

Bemerkungen

Medienabfragen werden in allen modernen Browsern unterstützt, einschließlich Chrome, Firefox, Opera und Internet Explorer 9 und höher.


Es ist wichtig zu beachten, dass die orientation nicht auf mobile Geräte beschränkt ist. Es basiert auf der Breite und Höhe des Ansichtsfensters (nicht Fenster oder Geräte).

Der Landschaftsmodus ist, wenn die Breite des Ansichtsfensters größer als die Höhe des Ansichtsfensters ist.

Der Porträtmodus ist, wenn die Höhe des Ansichtsfensters größer als die Breite des Ansichtsfensters ist.

Dies bedeutet normalerweise, dass sich ein Desktop-Monitor im Querformat befindet. Manchmal kann es sich jedoch auch um ein Portrait handeln.


In den meisten Fällen melden mobile Geräte ihre Auflösung und nicht ihre tatsächliche Pixelgröße, die sich aufgrund der Pixeldichte unterscheiden kann. Um sie zu zwingen, ihre tatsächliche Pixelgröße anzugeben, fügen Sie Folgendes in Ihrem head Tag hinzu:

<meta name="viewport" content="width=device-width, initial-scale=1">


Basisbeispiel

@media screen and (min-width: 720px) {
    body {
        background-color: skyblue;
    }
}

Die obige Medienabfrage gibt zwei Bedingungen an:

  1. Die Seite muss auf einem normalen Bildschirm angezeigt werden (keine gedruckte Seite, Projektor usw.).
  2. Die Breite des Ansichtsports des Benutzers muss mindestens 720 Pixel betragen.

Wenn diese Bedingungen erfüllt sind, sind die Stile in der Medienabfrage aktiv und die Hintergrundfarbe der Seite ist himmelblau.

Medienabfragen werden dynamisch angewendet. Wenn beim Laden der Seite die in der Medienabfrage angegebenen Bedingungen erfüllt sind, wird das CSS angewendet, es wird jedoch sofort deaktiviert, wenn die Bedingungen nicht mehr erfüllt sind. Wenn die Bedingungen anfangs nicht erfüllt sind, wird das CSS erst dann angewendet, wenn die angegebenen Bedingungen erfüllt sind.

Wenn die Ansichtsanschlussbreite des Benutzers anfangs größer als 720 Pixel ist, der Benutzer jedoch die Breite des Browsers verkleinert, wird die Hintergrundfarbe nicht mehr himmelblau, sobald der Benutzer den Ansichtsanschluss auf weniger als 720 Pixel verkleinert Breite.

<link rel="stylesheet" media="min-width: 600px" href="example.css" />

Dieses Stylesheet wird noch heruntergeladen, jedoch nur auf Geräten mit einer Bildschirmbreite von mehr als 600px angewendet.

Medientyp

Medienabfragen haben einen optionalen mediatype Parameter. Dieser Parameter wird direkt nach der @media Deklaration ( @media mediatype ) @media mediatype Beispiel:

@media print {
    html {
        background-color: white;
    }
}

Der obige CSS-Code gibt dem DOM- HTML Element beim Drucken eine weiße Hintergrundfarbe.

Der mediatype Parameter hat ein optionales not oder only Präfix, das die Stile auf alles außer dem angegebenen Medientyp oder nur dem angegebenen Medientyp anwendet. Im folgenden Codebeispiel wird der Stil beispielsweise auf alle Medientypen mit Ausnahme des print .

@media not print {
    html {
        background-color: green;
    }
}

Und auf die gleiche Weise, um es nur auf dem Bildschirm anzuzeigen, kann dies verwendet werden:

@media only screen {
    .fadeInEffects {
        display: block;
    }
}

Die Liste der mediatype kann anhand der folgenden Tabelle besser verstanden werden:

Medientyp Beschreibung
all Auf alle Geräte anwenden
screen Standardcomputer
print Drucker im Allgemeinen. Wird verwendet, um Druckversionen von Websites zu gestalten
handheld PDAs, Handys und Handgeräte mit kleinem Bildschirm
projection Zur projizierten Präsentation, zum Beispiel Projektoren
aural Sprachsysteme
braille Braille-taktile Geräte
embossed Paged Braille-Drucker
tv Fernsehgeräte
tty Geräte mit einem Zeichenraster mit festem Abstand. Terminals, tragbare Geräte.

Verwenden von Medienabfragen zum Anpassen verschiedener Bildschirmgrößen

Beim responsive Webdesign handelt es sich häufig um Medienabfragen, bei denen es sich um CSS-Blöcke handelt, die nur ausgeführt werden, wenn eine Bedingung erfüllt ist. Dies ist hilfreich für responsives Webdesign, da Sie mithilfe von Medienabfragen andere CSS-Stile für die mobile Version Ihrer Website als für die Desktopversion angeben können.

@media only screen and (min-width: 300px) and (max-width: 767px) {
    .site-title {
        font-size: 80%;
    }

    /* Styles in this block are only applied if the screen size is atleast 300px wide, but no more than 767px */
}

@media only screen and (min-width: 768px) and (max-width: 1023px) {
    .site-title {
        font-size: 90%;
    }

    /* Styles in this block are only applied if the screen size is atleast 768px wide, but no more than 1023px */
}

@media only screen and (min-width: 1024px) {
    .site-title {
        font-size: 120%;
    }

    /* Styles in this block are only applied if the screen size is over 1024px wide. */
}

Breite vs. Sichtfenster

Bei der Verwendung von "width" bei Medienabfragen ist es wichtig, das Meta-Tag richtig einzustellen. Das grundlegende Meta-Tag sieht folgendermaßen aus und muss in das <head> -Tag eingefügt werden.

<meta name="viewport" content="width=device-width,initial-scale=1">

Warum ist das wichtig?

Basierend auf der Definition des MDN ist "width"

Die Medienbreite-Funktion beschreibt die Breite der Rendering-Oberfläche des Ausgabegeräts (z. B. die Breite des Dokumentfensters oder die Breite des Seitenrahmens eines Druckers).

Was bedeutet das?

View-Port ist die Breite des Geräts selbst. Wenn Ihre Bildschirmauflösung eine Auflösung von 1280 x 720 angibt, ist die Breite des Ansichtsports "1280px".

Häufig weisen viele Geräte eine andere Pixelmenge zu, um ein Pixel anzuzeigen. Für ein Beispiel hat das iPhone 6 Plus eine Auflösung von 1242 x 2208. Die tatsächliche Breite des Ansichtsfensters und die Höhe des Ansichtsfensters beträgt jedoch 414 x 736. Das bedeutet, dass 3 Pixel zum Erstellen eines Pixels verwendet werden.

Wenn Sie das meta Tag jedoch nicht richtig eingestellt haben, wird versucht, Ihre Website mit ihrer nativen Auflösung anzuzeigen, die eine verkleinerte Ansicht (kleinere Texte und Bilder) ergibt.

Medienabfragen für Retina- und Nicht-Retina-Bildschirme

Obwohl dies nur für WebKit-basierte Browser funktioniert, ist dies hilfreich:

/* ----------- Non-Retina Screens ----------- */
@media screen 
  and (min-width: 1200px) 
  and (max-width: 1600px) 
  and (-webkit-min-device-pixel-ratio: 1) { 
}

/* ----------- Retina Screens ----------- */
@media screen 
  and (min-width: 1200px) 
  and (max-width: 1600px) 
  and (-webkit-min-device-pixel-ratio: 2)
  and (min-resolution: 192dpi) { 
}

Hintergrundinformation

Es gibt zwei Arten von Pixeln in der Anzeige. Eines sind die logischen Pixel und das andere sind die physischen Pixel. Meist bleiben die physischen Pixel immer gleich, da sie für alle Anzeigegeräte gleich sind. Die logischen Pixel ändern sich je nach Auflösung der Geräte, um Pixel mit höherer Qualität anzuzeigen. Das Gerätepixelverhältnis ist das Verhältnis zwischen physikalischen Pixeln und logischen Pixeln. Beispielsweise geben das MacBook Pro Retina, iPhone 4 und höher ein Gerätepixelverhältnis von 2 an, da die physikalische lineare Auflösung die doppelte logische Auflösung ist.

Der Grund, warum dies nur mit WebKit-basierten Browsern funktioniert, hat folgende Gründe:

  • Das Lieferantenpräfix -webkit- vor der Regel.
  • Dies wurde nicht in anderen Engines als WebKit und Blink implementiert.

Terminologie und Struktur

Medienabfragen ermöglichen die Anwendung von CSS-Regeln basierend auf dem Gerätetyp / Medium (z. B. Bildschirm, Druck oder Handheld), dem so genannten Medientyp . Zusätzliche Aspekte des Geräts werden mit Medienfunktionen beschrieben, wie z.

Allgemeine Struktur einer Medienanfrage

@media [...] {
    /* One or more CSS rules to apply when the query is satisfied */
}

Eine Medienanfrage, die einen Medientyp enthält

@media print {
    /* One or more CSS rules to apply when the query is satisfied */
}

Eine Medienabfrage, die einen Medientyp und eine Medienfunktion enthält

@media screen and (max-width: 600px) {
    /* One or more CSS rules to apply when the query is satisfied */
}

Eine Medienabfrage mit einer Medienfunktion (und einem impliziten Medientyp "Alle")

@media (orientation: portrait) {        
    /* One or more CSS rules to apply when the query is satisfied */
}

Medienabfragen und IE8

Medienabfragen werden in IE8 und darunter überhaupt nicht unterstützt.


Eine Javascript-basierte Problemumgehung

Um die Unterstützung für IE8 hinzuzufügen, können Sie eine von mehreren JS-Lösungen verwenden. Zum Beispiel kann " Antworten " hinzugefügt werden, um die Unterstützung für Medienabfragen für IE8 nur mit dem folgenden Code hinzuzufügen:

<!--[if lt IE 9]>
<script 
   src="respond.min.js">
</script>
<![endif]-->

CSS Mediaqueries ist eine andere Bibliothek, die dasselbe tut. Der Code zum Hinzufügen dieser Bibliothek zu Ihrem HTML-Code wäre identisch:

<!--[if lt IE 9]>
<script 
   src="css3-mediaqueries.js">
</script>
<![endif]-->

Die Alternative

Wenn Sie keine JS-basierte Lösung mögen, sollten Sie auch ein IE <9-Stylesheet hinzufügen, in dem Sie Ihren Stil für IE <9 anpassen. Dazu sollten Sie Ihrem Code den folgenden HTML-Code hinzufügen:

<!--[if lt IE 9]>
<link rel="stylesheet" type="text/css" media="all" href="style-ielt9.css"/>
<![endif]-->

Hinweis :

Technisch gesehen ist es eine weitere Alternative: CSS-Hacks verwenden, um auf IE <9 zu zielen. Es hat die gleichen Auswirkungen wie ein IE <9-Stylesheet, aber Sie benötigen dafür kein separates Stylesheet. Ich empfehle diese Option jedoch nicht, da sie ungültigen CSS-Code erzeugen (was nur einer von mehreren Gründen ist, warum die Verwendung von CSS-Hacks heute allgemein missbilligt wird).



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow