Mit CSS-Medienabfragen können Sie max-device-width
eine Gerätebreite (z. B. ein iPhone oder ein Android-Gerät) und / oder eine max-width
Gerätebreite festlegen.
Wenn Sie max-device-width
die Größe des Browserfensters auf Ihrem Desktop ändern, ändert sich das CSS nicht, da sich die Größe Ihres Desktops nicht ändert.
Wenn Sie max-width
die Größe des Browserfensters auf Ihrem Desktop ändern, wird Ihnen möglicherweise ein mobiles Design angezeigt, z. B. berührungsfreundliche Elemente und Menüs und dergleichen.
Das Targeting bestimmter Browser (und Geräte?) Ist jetzt veraltet und Sie sollten etwas agnostischer mit dem sein, auf das Sie abzielen. Gilt das auch für Medienabfragen?
Warum sollten Sie übereinander zielen? Welches ist das empfohlene?
Dies ist ein Beispiel für eine Medienabfrage, die ich auf einer Produktionswebsite verwende:
@media only screen and (min-device-width: 320px) and (max-device-width: 480px) and (min-device-height: 480px) and (max-device-height: 640px) {
/* Change a menu to fit the screen better, etc... */
}
Ich neige dazu, beide max-device-width
und zu verwenden max-width
.
Antworten:
TL; DR
Wenn Sie eine reaktionsschnelle Website erstellen, verwenden Sie
min-width
/max-width
in Ihren Medienabfragen anstelle vonmin-device-width
/,max-device-width
um einen größeren Bereich von Bildschirmgrößen zu erreichen.Gemäß dem Entwurf der Spezifikation für Medienabfragen der Stufe 4 für 2018 ist die
device-width
Medienfunktion veraltet . Es wird aus Gründen der Abwärtskompatibilität beibehalten, sollte jedoch vermieden werden.Denken Sie als Randnotiz daran, im Abschnitt Ihres Dokuments ein Ansichtsfenster-Meta-Tag anzugeben
<head>
:<meta name="viewport" content="width=device-width, initial-scale=1">
Erläuterung
Aufgrund all der unterschiedlichen möglichen Bildschirmauflösungen und Pixeldichten, die ein bestimmtes Gerät haben kann, ist ein Pixel kein Pixel, da verschiedene Dinge zu berücksichtigen sind (Zoom, Pixeldichte, Bildschirmauflösung und -größe, Geräteorientierung, Seitenverhältnis usw.) ..). In diesem Fall wird ein Pixel tatsächlich als "optische Referenzeinheit" und nicht als physikalisches Hardwarepixel bezeichnet.
Glücklicherweise können Sie im Abschnitt Ihres Dokuments ein Ansichtsfenster-Meta-Tag angeben
<head>
, um die Breite und Skalierung des Ansichtsfensters des Browsers zu steuern. Wenn dieses Tag dencontent
Wert "hat"width=device-width
, stimmt die Bildschirmbreite mit den geräteunabhängigen Pixeln überein und stellt sicher, dass alle verschiedenen Geräte skaliert werden und sich konsistent verhalten.<meta name="viewport" content="width=device-width, initial-scale=1">
In Bezug auf Medienabfragen möchten Sie wahrscheinlich
max-width
eher als verwendenmax-device-width
, da diesmax-width
auf das Ansichtsfenster (aktuelles Browserfenster) abzielt, währendmax-device-width
es auf die tatsächliche Vollbildgröße / Auflösung des Geräts abzielt.Mit anderen Worten, wenn Sie verwenden
max-device-width
, werden beim Ändern dermax-width
Größe Ihres Desktop-Browsers keine unterschiedlichen Medienabfragen angewendet, da im Gegensatz dazu nur die tatsächliche Vollbildgröße des Geräts berücksichtigt wird. nicht die aktuelle Größe des Browserfensters.Dies macht einen großen Unterschied, wenn Sie versuchen, ein adaptives Layout zu erstellen, da die Site beim Ändern der Größe des Browsers nicht reagiert. Wenn Sie
max-device-width
die Medienabfragen verwenden, die Sie für Geräte mit kleineren Bildschirmen verwenden, gelten diese auch dann nicht für Desktops, wenn Sie die Größe des Browserfensters auf die kleinere Bildschirmgröße verkleinern.Ab 2018 hat der neueste Entwurf der
device-width
Medienabfragespezifikation die Medienfunktion tatsächlich veraltet , daher sollte sie vermieden werden.Darüber hinaus wird in diesem Artikel über Google-Entwickler dringend davon abgeraten, Folgendes zu verwenden
max-device-width
:Weiterführende Literatur:
quelle
width=device-width
, stimmt die Bildschirmbreite mit den geräteunabhängigen Pixeln überein." Und wenn Sie auf einem iOS-Gerät surfen,dps
entspricht dies nicht dem, was? iOS Punkte? (Vielen Dank für diesen Beitrag übrigens!)max-device-width
und es ist wichtig, wenn Sie es in anpassbaren Ansichtsfensterumgebungen (Desktop) verwenden möchten.min-device-width
ist immer noch schlecht.Gerätebreite vermeiden. Der Grund ist, dass Sie nicht wissen können, wie die Browser des Benutzers darauf reagieren.
Für IOS scheint es zumindest mit Safari einfach zu sein. Es scheint eine einzige Antwort auf Gerätebreite zu sein, unabhängig von der Ausrichtung. Außerdem wird die Gerätebreite nur für die kürzere Seite des Geräts angegeben. Ich habe dies auf iPhone 4S und iPad getestet. Sie antworteten auf 320 bzw. 768, unabhängig von der Ausrichtung.
Für Android ist es unvorhersehbarer. Ich habe sechs Browser auf einem Huawei Ascend Y330 getestet (Android-Standardbrowser, Chrome, Opera, Firefox, Firefox Beta, Dolphin). Die Antwort variiert je nach Browsertyp und Ausrichtung.
Ich habe auf einer Seite mit Abfrage (max-Gerätebreite: *** px) getestet und herausgefunden, welchen px-Wert ich ausfüllen muss, um die Abfrage in einen echten Zustand zu versetzen. Je nach Browsertyp und Ausrichtung wurden vier verschiedene Werte benötigt (320, 480, 534, 800). Dies macht die Gerätebreite unbrauchbar.
quelle
Es ist schockierend für mich, dass es eine populäre Meinung zu sein scheint, dass dies wünschenswert ist. Ich habe nicht herausgefunden, ob das Design von Flüssigkeiten / Flüssigkeiten vor dem Handy aus den falschen oder richtigen Gründen als schlecht angesehen wurde. Es scheint mir, dass dies nur eine schickere Version des flüssigen Layouts ist, aber eine, die Designer aus irgendeinem Grund annehmen.
Als sich die gesamte Design-Community Mitte der 2000er Jahre entschied, feste Layouts anstelle von Flüssigkeit zu verwenden, war dies darauf zurückzuführen, dass Textrückflüsse die Lesbarkeit beeinträchtigten und häufig zu Witwen und anderen typografischen Artefakten führten. Darüber hinaus war die Pflege der Codebasis von Design zu Design oft schwierig, um zu verhindern, dass Elemente kollidieren usw. Der einzige Unterschied zwischen flüssigen Layouts und reaktionsschnellem Design besteht darin, dass reaktionsschnell aufgrund besserer Browser und der Verbreitung von mauerwerkartigen Frameworks die Ausführung erleichtert.
Ich persönlich verwende die minimale / maximale Gerätebreite, weil ich lieber Desktop-Dokumentkonventionen befolge, die jahrzehntelangen Vorrang haben. Nicht alle Dokumente, die Sie im Internet öffnen, verhalten sich auf einem Desktop so, noch andere Arten von Dokumenten oder Anwendungen, die Sie auf Ihren Desktop laden. Seiten, die vor der Dominanz von Mobilgeräten erstellt wurden, wie MS Word, Photoshop usw., behalten ihre Bildlaufpositionen bei und ändern ihre Layouts nicht, sodass Benutzer den Inhalt des Seitenflusses verfolgen können, wenn sie die nicht verwandte Aufgabe der Fensterverwaltung ausführen.
Im Allgemeinen verwende ich 3 Haltepunkte: einen für Telefone, einen für Tablets und einen für Desktops. Der Desktop und häufig zumindest das Querformat sind fixiert und das Tablet-Porträt und darunter sind flüssig. Diese Kombination aus adaptiv und reaktionsschnell ermöglicht es dem Desktop, sich wie eine Desktop-Site zu verhalten, ohne dass ich 10 separate Layouts für mobile Geräte mit fester Breite benötigen muss. Der Text fließt auf Mobilgeräten nicht erneut, da die Größe des Ansichtsfensters nicht geändert werden kann.
quelle
*-device-width