Auch bekannt als „auflösungsabhängige Layouts“. Eine Website, verschiedene CSS-Dateien zum Neuordnen einer Website, um die verfügbare Größe zu nutzen.

Es gibt eine W3C-standardisierte Methode, sie zu deklarieren. Eine Möglichkeit ist, die „device-width“ zu testen, wie hier:
<link rel="stylesheet" media="screen and (min-device-width: 800px)" href="800.css" />
Der obige Code wendet das Styling von 800.css nur dann auf das Dokument an, wenn das Gerät, das es anzeigt, eine Breite von 800 Pixeln oder mehr hat. Und… unterstützt auf diese Weise „Media Queries“.
Beachten Sie, dass dies die Gerätebreite ist, nicht die aktuelle Breite des Browserfensters. Auf dem iPhone (3G(s)) bedeutet das 480 Pixel. Mein neues schickes MacBook Pro gibt für die Gerätebreite 1920 Pixel zurück. Aber mein tatsächliches Browserfenster ist im Moment nur halb so breit. Die Gerätebreite ist bei mobilen Geräten sehr nützlich, da der Browser wahrscheinlich immer 100 % des Bildschirms ausfüllt, wenn er verwendet wird, aber bei Laptop-/Desktop-Browsern weniger nützlich ist.
Scheint mir viel nützlicher zu sein die aktuelle Breite des Browserfensters („Viewport“). Wir können sogar Stylesheets angeben, die nur verwendet werden sollen, wenn der Viewport zwischen zwei verschiedenen Pixelgrößen liegt
<link rel='stylesheet' media='screen and (min-width: 701px) and (max-width: 900px)' href='css/medium.css' />
Dieses Stylesheet wird nur wirksam, wenn das aktuelle Browserfenster zwischen 701 und 900 Pixel breit ist.
Browser-Unterstützung
IE 9+, Firefox 3.6+, Safari 3+, Alle Chrome, Opera 10+. Mozilla schlägt vor, das Media-Attribut von <link /> mit „only“ zu beginnen, wodurch das Stylesheet vor älteren Browsern versteckt wird, die keine Media Queries unterstützen. Das mag beabsichtigt sein oder auch nicht… fallabhängig natürlich.
<link rel="stylesheet" media="only screen and (color)" href="example.css" />
Im Allgemeinen ist das Layout eine der Dinge, bei denen es schwierig ist, „progressive enhancement“ zu verkaufen. Abgerundete Ecken werden zu Quadraten, kein großes Problem. Ein vermasseltes Layout, das ist ein großes Problem. Geräte wie das iPhone sind im Moment ziemlich großartig, da die Browserauswahl so begrenzt ist (früher gab es nur Mobile Safari und das war's, jetzt gibt es auch Opera) und sie sehr gute Browser sind, kann man sich auf Techniken wie diese verlassen, dass sie funktionieren.
Wenn IE-Unterstützung von entscheidender Bedeutung ist, haben wir immer noch JavaScript!
Mit jQuery umsetzen
Mit JavaScript können wir die Fensterbreite testen und die aktive CSS-Datei entsprechend ändern. Dies funktioniert in allen Browsern. Sie können einem <link />-Element wie jedem anderen eine ID geben, also fügen wir diese hinzu
<link rel="stylesheet" type="text/css" href="main.css" />
<link id="size-stylesheet" rel="stylesheet" type="text/css" href="narrow.css" />
Dann können wir diese als Haken verwenden und den href-Wert des Stylesheets ändern. Der Browser sieht diese Änderung und entfernt das alte CSS und wendet das neu verknüpfte CSS erneut an. Wir führen unseren kleinen Anpassungstest einmal sofort durch und dann jedes Mal, wenn das Fenster danach resized wird.
function adjustStyle(width) {
width = parseInt(width);
if (width < 701) {
$("#size-stylesheet").attr("href", "css/narrow.css");
} else if (width < 900) {
$("#size-stylesheet").attr("href", "css/medium.css");
} else {
$("#size-stylesheet").attr("href", "css/wide.css");
}
}
$(function() {
adjustStyle($(this).width());
$(window).resize(function() {
adjustStyle($(this).width());
});
});
Ist jQuery wirklich nötig, nur dafür?
Nein, aber ich bin sicher, Sie wissen, dass das einfach meine Art ist, im Allgemeinen, und es macht es einfacher. Kevin Hale schrieb vor buchstäblich fünf Jahren über dynamische Auflösungs-Layouts. Es ist „rohes“ JavaScript und funktioniert auch heute noch großartig.
Außerdem gibt es ein geniales Polyfill: Respond.js
Video
Resolution Dependent Layout with CSS von Chris Coyier auf Vimeo.
Beispiel Eins
Dieses hat ein spezielles Stylesheet für schmale (weniger als 700 Pixel), mittlere (701 – 900 Pixel) und breite (mehr als 901 Pixel) Browserfenster.
Beispiel Zwei
Dies tut genau dasselbe wie Beispiel Eins, nur über jQuery/JavaScript anstelle von CSS-Media-Queries.
Beispiel Drei
Dieses Beispiel zeigt, dass wir mobile Geräte ansprechen können, indem wir eine maximale Gerätebreite testen.

Download
Schnappen Sie sich alle diese als Referenz an einem Ort.
Das ist großartig. Vielen Dank.
Blickt man in die Zukunft, müssen Webdesigner dann Websites erstellen, die die größten & kleinsten sind, um Platz zu schaffen? Stellen Sie diese Frage. :-P
Schön! Danke dafür, Chris :)
Toller Tipp! Ich werde das ausprobieren. Danke!
Sehr cool! Erinnert mich an http://lessframework.com/
interessanter Hinweis: DreamweaverCS5 in all seiner WYSIWYG-Herrlichkeit unterstützt diese Funktionalität… nicht das jQuery-Bit, aber. Ich habe ein Video davon gesehen, als ich auf all die CS5-Vorschauen geeked out habe.
Toller Artikel! Danke für die Anleitung.
ES IST ÜBER NEUNHUNDERT!!!
lol, musste.
Fehlgeschlagen
Wow, das ist einfach großartig!
Schön… was ist mit Opera?
Was ist damit?
Ich denke, Dim möchte wissen, wie es mit Opera unterstützt wird.
Daniel hat's verstanden.
Nein, ich denke, Chris hat's verstanden.
bu-dum tsss
Ich habe es gerade im Artikel und im Mini-Screencast behandelt. Es funktioniert =)
Wow, das kommt wie gerufen! Danke!
Genial! Ich habe danach gesucht.
Geniale Idee und geniale Beispiele, Chris, aber so sehr ich es mag, es beängstigt mich auch. In den falschen Händen, wird die Macht zum Guten oder Bösen eingesetzt?
Toller Artikel..
Danke Chris..
Gute Arbeit. Liebe den Workaround für IE. (Auch wenn ich ihn nicht benutze)
Ich habe ein jQuery-Plugin dafür geschrieben, damit es browserübergreifend funktioniert (sogar die IE-Familie): jQuery browserSizr.
http://www.csslab.cl/2009/07/22/jquery-browsersizr/
Toller Artikel, danke.
Man braucht kein JavaScript, um flüssige Layouts zu erstellen. Sicher, es ist cool, zusätzliche Inhalte anzuzeigen, aber wenn man sie nicht von Anfang an hat, kann man genauso gut bei dem bleiben, was man hat. Machen Sie Ihre gesamte Website flüssig und Sie haben diesen Effekt auch.
Das ist jedoch kein strikt flüssiges Layout. Es ist ein völlig anderes Layout, abhängig von der Fensterbreite.
Ein echtes flüssiges Layout würde nur Breiten in Prozent skalieren.
Gut gemacht, danke!
Übrigens, wie heißt der iPhone-Simulator?
iPhone simulator
mit einem großen P.
Ich liebe die alternativen CSS-Sheets mit maximaler Breite. Das erledigt viele Dinge, an denen ich für mobile Geräte arbeite, ohne jQuery zu verwenden, wenn der Browser keine JavaScript-Unterstützung hat.
Ich benutze gerne sowohl die „width“- als auch die „device-width“-Media-Queries beim Design für mobile Geräte.
Warum nicht beide Eventualitäten abdecken :)
Ich habe die Implementierungsdetails hier hinterlegt,
http://protofluid.com/?c=mediaQueries
Funktioniert die maximale Gerätebreite auf IE-Browsergeräten? Blackberries, Androids, iPhones kenne ich sicher.
Oder ist JavaScript der Weg für diese? Ich hasse die Entwicklung für IE oder jedes Gerät mit IE, aber es muss getan werden. Ich glaube nicht, dass viele mobile IE-Geräte JavaScript in ihren Browsern aktiviert haben. Ich weiß nichts über die MS-Geräte Mobile7.
Sehr cooler Artikel.
Danke im Voraus.
Würde das mit @media funktionieren?
Beisp.
@media screen and (min-width: 490px) and (max-width: 1600px) {
}
Ja, so mache ich es am liebsten!
Sie haben viele Optionen zur Angabe von Media Queries, aber ich muss zugeben, diese hier erscheint mir am besten.
Das ist FANTASTISCH!!! Vielen, vielen Dank fürs Teilen. Das hätte ich schon vor langer Zeit gebrauchen können. : )
Ich würde gerne eine flüssige Version dieses Layouts sehen, bei der sich jedes der drei Layouts über die gesamte Breite des Browserfensters erstreckt. Dann wäre es wirklich ein auflösungsunabhängiges Layout.
Guter Artikel Chris.
Ich habe versucht, media=“only screen and (color)” mit IE 9 Platform Preview zu verwenden, und es unterstützt es bisher nicht.
Interessanter Artikel, Chris. Ich denke, es wäre cool, dies zu verwenden, um die Breite des Hauptinhaltsbereichs für Personen mit größeren Bildschirmen zu erhöhen.
Nur zur Information: Man nennt es Vanilla, nicht „rohes“ JavaScript.
Können wir es „bareback“ JavaScript nennen?
Kann ich es „sweetheart“ nennen?
Toller Tipp. Das ist wahrscheinlich schwieriger zu implementieren, gibt mir aber das gute Gefühl, dass es der richtige Weg ist. Websites entwerfen, die überall schön laufen. :)
Gibt es Gedanken zur besten Methode, dies in einem Layout mit Bildern zu implementieren? Wahrscheinlich würde es die Verwendung einiger der von Robot Ninja beschriebenen Techniken beinhalten unter http://unstoppablerobotninja.com/entry/fluid-images/
Tolle Infos!!! Danke fürs Teilen, Chris
Ich wusste, wie das mit JavaScript geht, aber nicht mit dem „device-width“-Ding. Es ist sehr cool~
Sehr schön, ich habe gerade nach einer sauberen Möglichkeit gesucht, mobile Geräte anzusprechen.
Aber eine Sache: Das zweite Beispiel funktioniert in Chrome unter Windows nicht richtig; die Content- und Extra-Divs sind nicht richtig ausgerichtet. Liegt das am Demoing oder am JS? (Soweit ich sehen kann, wird dasselbe Stylesheet verwendet).
Cool für Designer/Entwickler, aber werden die Leser es nützlich finden, wenn sich Inhalte verschieben/bewegen?
Warum sollten sie es mögen, wenn sich die Fenstergröße ständig ändert?
Wow! Danke!
Habe an etwas Ähnlichem gearbeitet. Es hat geholfen
Ok, das ist großartig! Endlose Möglichkeiten.
Sie haben es ziemlich abrupt beendet, was ist passiert? :)
Nachdem ich das gelesen habe, überlege ich ernsthaft, ob ich damit beginnen sollte, Websites so zu gestalten, dass sie iPhone- und ähnliche Gerätefreundlich sind.
Ich schaue mir die Websites an, die ich auf iPhones und anderen tragbaren Geräten erstellt habe, und sie sehen gut aus, das einzige Problem ist das seitliche Scrollen usw. Aber ich denke, die Zukunft scheint sich zu kleinen Bildschirmen zu entwickeln, und daher sollten Websites den wachsenden Markt bedienen.
Ich habe irgendwo gelesen, dass Dreamweaver CS5 eine Art Funktionalität haben wird, die es Ihnen ermöglicht, eine Website zu erstellen, und Dreamweaver dann automatisch Stylesheets für Geräte wie iPhones usw. erstellt.
Dies und mehr kann einfach mit dem Elastic CSS Framework gemacht werden, schauen Sie sich Adaptive Columns im Demo-Bereich an.
Ziemlich raffiniert, ich wusste nicht, dass so etwas mit reinem CSS möglich ist – natürlich hat IE es wie üblich vermasselt, aber danke auch für das jQ-Beispiel. Ich frage mich, ob Sie auch ein MooTools-Beispiel posten könnten, oder vielleicht ist das etwas, um David Walsh anzupingen xD
Ich sehe diese Funktion im Nettut+ Blog und möchte ein Skript erstellen, um das zu tun. Aber Sie haben das alles schon gemacht, sogar besser mit nur CSS. Danke fürs Teilen.
Ich stimme dieser Methode voll und ganz zu, insbesondere für die Entwicklung unterschiedlicher Stylesheets für verschiedene mobile Geräte.
Schauen Sie sich ProtoFluid an, das diese Technik nutzt (wir haben es vor kurzem gestartet!). http://protofluid.com
Es ermöglicht Ihnen, CSS3 Media Queries bei bestimmten Auflösungen (z. B. Handybreiten) sehr einfach zu testen.
Danke für den Artikel, super Timing ;)
Danke für den nützlichen Artikel. Beste Grüße Mann
Das ist ein schöner Artikel… Ich habe zum ersten Mal davon erfahren, verschiedene CSS im Header zu definieren, um das Layout je nach Gerät zu steuern.
Ich war es gewohnt, ein einziges CSS mit 100 % Breite zu verwenden, und wenn ich % verwende, passt es sich automatisch an die Browserbreite an.
Jquery ist gut und ich werde das auch versuchen
Idee von The Man In Blue pionierhaft entwickelt: http://themaninblue.com/writing/perspective/2004/09/21/
Hallo,
Das wäre wirklich schön, wenn es für IE unterstützt würde!
Trotzdem eine großartige Technik und danke fürs Teilen.
Ausgezeichneter Artikel. Danke Ted
Vielleicht gefällt Ihnen die automatische Größenanpassung unseres kleinen jQuery-Experiments: http://centratissimo.musings.it
Schauen Sie es sich an und lassen Sie uns wissen, ob es Ihnen gefällt!
Der Artikel erscheint am 23., das Bedürfnis genau dafür kommt am 27. auf. Sie haben mir gerade einen riesigen Kopfschmerz erspart. Danke!
Wirklich schöner Artikel, Chris! Das könnte ein raffinierter Trick sein, um alle Handys da draußen zu unterstützen. Aber ich bin etwas misstrauisch. Ich meine, sie unterstützen kein jQuerry, oder?
Ein großartiges Konzept, aber ich bin nicht der Meinung, dass es plausibel ist. Inhalte zu verschieben, abhängig von der Browserbreite, könnte äußerst gefährlich sein. Benutzer mögen es nicht, wenn Dinge zufällig zu wackeln beginnen. Sie neigen dazu zu denken: „Was ist los mit dieser Seite? Sie ist offensichtlich kaputt. Ich gehe woanders hin.“
Die Nutzung der Gerätebreite, insbesondere für mobile Geräte, halte ich jedoch für viel nützlicher. Es sei denn, Sie haben bereits eine etablierte Webpräsenz oder eine sehr technisch versierte Benutzerbasis, würde ich von der Medienbreite abraten.
Großartig, Mann! Genial ………………………………..
Schöne Idee, aber ich glaube nicht, dass sie in der Praxis funktioniert. Der Grund ist zum Beispiel, dass Bilder für unterschiedliche Größen neu skaliert werden müssen. Wenn Sie es für ein mobiles Design verwenden, laden Sie möglicherweise Inhalte, die am Ende nicht angezeigt werden.
Ich schätze, dies könnte auch verwendet werden, um zum Beispiel Layouts beim Betrachten auf einem iPhone zu wechseln und die Ausrichtung zu ändern (Hochformat/Querformat) :)
Ich suche schon seit Ewigkeiten nach einem Beitrag dazu… Mein Freund sagte, man könnte unterschiedliche Stylesheets auf W3C-konforme Weise haben und hier ist er. Danke für die Ressource, sehr geschätzt.
Ich möchte sehen, ob einige beliebte Websites @media über CSS anpassen.
Nettuts+ — die einzige wirkliche Website, von der ich weiß, dass sie die Technik verwendet — mit JavaScript.
Ich habe @media query auf einem zufälligen kleinen Projekt verwendet, weil ich gelangweilt war (und es auch ausprobieren wollte).
Hallo,
Ich habe ein großes Problem
Ich benutze 1180px Breite für das Layout
Im Stylesheet setze ich container width 1180px;
Auf dem Desktop-PC habe ich kein Problem, aber
Ist es möglich, eine einzige Haupt-CSS-Datei zu haben, die die Stylesheets für die relevanten Auflösungen enthält, anstatt 3 Link-Tags im HTML?
Grüße und Danke für den Tipp
Ernsthaft? 50 KB+ von modularisiertem, langsamem JavaScript nur zum Ändern eines Stylesheets? Die „rohe“ Lösung, oder wie ich sie nenne, die echte Lösung, ist etwa 2 KB und verwendet keine 20.000 Funktionen und 20.000 Objekte, um ein Element abzurufen.
Nichts davon funktioniert. Zeitverschwendung…
Danke, das ist sehr, sehr hilfreich. Gibt es eine Möglichkeit, das dynamische Dropdown mit der jQuery-Methode zu erstellen, wenn das ursprüngliche Menü ein CSS-Dropdown hat, wie zum Beispiel
wie Sie sehen können, gibt es eine zweite < ul > im Menü.
Oh großartig! Ich dachte, ich bräuchte zu viel Scripting dafür. Aber das ist nicht der Fall. Danke für das großartige Tutorial. Jetzt ist meine Website ziemlich gut mit mobilen Geräten kompatibel.
Was für ein genialer Artikel. Super einfache Lösung für ein tolles flüssiges Layout. Danke, Bro!
WOW, vielen Dank
Das war wirklich eine tolle Lernerfahrung. Ein Unterschied zwischen max-width und max-device width. Das ist der Trick, den jeder lernen sollte.
Meine Hauptsorge ist: Werden die verschiedenen verknüpften Stylesheets geladen, AUCH wenn sie außerhalb des Bereichs für das aktuelle Gerät liegen?
Mit anderen Worten, werden die verknüpften Stylesheets nach Gerätebreite „ausgewählt“ oder „geladen“?
Ich möchte, dass sie gar nicht geladen werden, wenn das aktuelle Gerät außerhalb der angegebenen Grenzen liegt, oder wenn das Gerät oder Ihr HTML die Option Querformat deaktiviert hat (ich weiß nicht, wie es genannt wird, wenn man das Gerät dreht).
Ich habe versucht, dies aufzuschreiben, und als ich es getestet habe, ist nichts passiert. Ich habe sowohl die jQuery- als auch die CSS-Medienmethode verwendet (zusammen und separat). Mein Hauptziel ist hauptsächlich die Größenänderung des Browserfensters.