Wenn Sie responsive Bilder implementieren (unterschiedliche Bilder in HTML für unterschiedliche Situationen) und nur zwischen verschiedenen Versionen desselben Bildes wechseln (die überwiegende Mehrheit der Nutzung), benötigen Sie nur das Attribut srcset für <img>. Betrachten Sie diese einfache Syntax
<img src="small.jpg" srcset="medium.jpg 1000w, large.jpg 2000w" alt="yah">
Nicht nur die Syntax ist einfach, sondern sie erledigt auch eine bessere Arbeit als <picture> mit <source> mit expliziten media Attributen (wir werden gleich erklären, warum). Außerdem bietet sie die Möglichkeit, in Zukunft mit Browsereinstellungen und Browserverbesserungen viel besser zu werden.
Ich habe schon früher über dieses Thema gescreencastet, aber es hat besser geklickt, als ich Mat Marquis' Vortrag bei An Event Apart Austin sah, und mit Jason Grigsbys Beitrag. Ich schreibe hier erneut darüber, weil ich denke, dass es für uns alle wichtig ist, das zu verstehen.
Mit srcset erledigt der Browser die Arbeit, herauszufinden, welches Bild am besten geeignet ist.
Im einfachen Beispiel oben teilen wir dem Browser nur mit, welche Bilder wir zur Verfügung haben und welche Größe sie haben. Der Browser erledigt die gesamte Arbeit und findet heraus, welches davon am besten geeignet ist.
Mat Marquis demonstrierte dies, indem er zeigte, wie der Browser dies mit Mathematik angeht. Nehmen wir an, Sie verwenden ein Gerät mit einer Bildschirmbreite von 320 Pixeln und einem 1x (Non-Retina) Display. Und die Bilder, die Sie haben, sind small.jpg (500 Pixel breit), medium.jpg (1000 Pixel breit) und large.jpg (2000 Pixel breit).
Der Browser geht
Lassen Sie mich eine schnelle Berechnung durchführen, die niemanden interessiert außer mich.
500 / 320 = 1.5625
1000 / 320 = 3.125
2000 / 320 = 6.25
Okay, da ich ein 1x Display bin, ist 1,5625 das, was mir am nächsten liegt. Es ist etwas zu hoch, aber es ist die beste Option im Vergleich zu den anderen, die viel zu hoch sind.
Nun besucht ein anderer Browser die Seite. Es ist ebenfalls ein 320-Pixel-Display, aber es ist ein Retina (2x) Display. Dieser Browser macht dieselbe Rechnung, geht dann aber nur
Okay, da ich ein 2x Display bin, werde ich dieses 1,5625er Bild verwerfen, da es für mich zu niedrig ist und schlecht aussehen könnte. Ich werde das 3,125er Bild verwenden.
Sehen Sie, wie nützlich das bereits ist? Sie lassen den Browser die Arbeit machen, herauszufinden, was für ihn am besten ist, anstatt dass Sie es selbst versuchen.
Der Browser wird noch intelligenter werden.
Denken Sie daran, dass die Verwendung von srcset auf diese Weise bereits von Vorteil ist, aber sie wird noch besser. Betrachten Sie srcset als Vorschläge oder einfach als zusätzliche Informationen, die dem Browser bei der Entscheidung helfen. Letztendlich kann er tun, was er für richtig hält. Das bedeutet
- Ein Browser könnte Benutzereinstellungen bezüglich Bildern anbieten.
- Ein Browser könnte anfangen, Bandbreite zu berücksichtigen.
Ja, theoretisch, aber wahrscheinlich.
Und wenn Sie sich für <picture> mit expliziten Quellen entscheiden, muss der Browser genau das tun, was Sie sagen und keine eigenen Entscheidungen treffen. Nun, <picture> kann so eingerichtet werden, dass es genau das tut, was srcset derzeit tut, es ist nur viel umständlicher und lässt keinen Raum für Verbesserungen.
Außerdem sizes
Wir haben hier das sizes-Attribut absichtlich gar nicht besprochen. Es ist eigentlich nicht so schlimm, es einfach wegzulassen. In diesem Fall geht es davon aus, dass sizes="100vw", was bedeutet
Ich gehe davon aus, dass ein Bild, wenn es verwendet wird, die volle Breite des Viewports einnimmt.
Das ist normalerweise keine schlimme Annahme.
Wenn Sie möchten, können Sie es ganz spezifisch gestalten. Sie können sizes verwenden, um Ihr CSS-Layout exakt abzugleichen und dem Browser genau mitzuteilen, wie groß das Bild bei jeder Bildschirmgröße sein wird, entsprechend Ihren Breakpoints in Ihrem Design. Das kann etwas kompliziert werden und ehrlich gesagt auch etwas gefährlich, weil Sie CSS-Sachen in Markup schreiben, und Sie wissen ja, wie das so ist. Eric Portis hat gerade darüber geschrieben. Idealerweise kann es automatisiert oder serverseitig eingefügt werden.
Ich denke auch, dass "generische" sizes-Attribute nützlich sein könnten. Auf einer eher generischen Blog-ähnlichen Seite könnte vielleicht etwas wie das hier sinnvoll sein, innerhalb des Inhalts
sizes="(min-width: 800px) 50vw, 100vw"
Bedeutung: "Wenn das Browserfenster breiter als 800 Pixel ist, wird dieses Bild wahrscheinlich etwa halb so groß angezeigt. Wenn es kleiner ist, wird es wahrscheinlich vollbreit."
Warum darüber reden?
Nochmal: Die überwiegende Mehrheit der Anwendungen für responsive Bilder ist nicht "art direction"-basiert. Art Direction ist ein schicker Anwendungsfall, und bitte tun Sie es nach Herzenslust. <picture> ist dafür großartig.
Die meisten Anwendungen für responsive Bilder werden lauten: "Ich habe mehrere Versionen dieser Grafik. Hier sind sie, verwenden Sie die richtige."
Das ist ein sehr verwirrendes Thema. Es muss durchdacht und darüber geschrieben werden, damit es sich festsetzen und ein stärkerer Teil unseres kollektiven Bewusstseins als Frontend-Entwickler werden kann.
Tim Evko hat ein WordPress-Plugin für responsive Bilder erstellt. Es nutzt die Fähigkeit von WordPress, kleinere Versionen von Bildern zu erstellen. Dann klicken Sie auf das gewünschte Bild, und es gibt letztendlich den benötigten Code für responsive Bilder aus. Derzeit verwendet es <picture>. Das liegt daran, dass <picture> im kollektiven Bewusstsein der Frontend-Entwickler viel stärker verankert ist als srcset. Tim versucht, das alles zu verstehen, um herauszufinden, ob und wie er dieses Plugin ändern kann.
@Tevko @brad_frost srcset/sizes = Informationen, die dem Browser helfen, das Beste auszuwählen. Picture mit media attrs = explizit DO THIS ONLY
— Chris Coyier (@chriscoyier) 29. September 2014
Wann?
Das ist auch knifflig.
Wenn Sie es sofort haben möchten und großartige Browserunterstützung wünschen, müssen Sie es polyfillen. Aber das hat einige potenzielle Nachteile. Vorerst müssen Sie diese Entscheidung selbst treffen, ich bin mir nicht sicher, ob es für alle Szenarien bereits eine Best Practice gibt.
Tolle Sache. Sehr nützlich, danke.
Ich bin überzeugt, dass das Plugin geändert werden muss, und werde das kurzfristig beheben! Das Einzige, was noch zu entscheiden ist, ist, wie viele Standardbildgrößen erstellt werden sollen, zusammen mit der Idee, das sizes-Attribut wegzulassen oder einen typischen Blog-Standard einzubeziehen. Alle sind eingeladen, an der Diskussion auf Github teilzunehmen!
Eine weitere Sache, die erwähnt werden sollte (soweit ich weiß, obwohl ich keine Expertise beanspruchen kann)
Wenn sich die Browsergröße ändert – z. B. weil ein Desktop-Benutzer das Fenster vergrößert oder ein Mobile-Benutzer von Hoch- auf Querformat wechselt – zwingt die
<picture>-Syntax den Browser zum Wechseln der Bilder und lädt eine neue Datei herunter. Das ist wirklich schlecht für die Bandbreite und die Gesamtperformance der Webseite, wenn die neue Datei nur eine verkleinerte Version der Datei ist, die der Browser bereits verwendet hat. Mit srcset kann der Browser erkennen, dass die alte Datei immer noch funktioniert und sie wie gewohnt skalieren.Ich denke, der Punkt ist, dass
picturefür Fälle gedacht ist, in denen man mehr Angst vor dem Aussehen des Bildes für den Benutzer hat, undsrcseteher für Fälle, in denen man einfach etwas präsentieren muss, bei dem Qualität/Lesbarkeit keine Rolle spielt.Ja – das ist nicht in aktuellen (geplanten) Implementierungen, aber Firefox hat darüber nachgedacht.
Dieser Teil der Spezifikation wurde bewusst vage gehalten, damit Browser Raum für Optimierungen wie diese haben. Es gibt viel Raum für zukünftige Verbesserungen.
Es sieht immer mehr so aus, als ob die Browser die Entwicklung mehr vorantreiben als das W3C.. Dies ist in Chrome 34, wenn FF es unterstützt und es in IE12 ist, dann ist es quasi akzeptiert.. aber was passiert dann, wenn das W3C den Standard ändert und/oder die Tags picture und image zusammenführt?
Das W3C besteht hauptsächlich aus den wichtigsten Browseranbietern.
Ja. Nicht nur das, das W3C führt nichts in den Standardisierungsprozess ein, es sei denn, Browser sind daran interessiert, es zu implementieren (oder, was noch häufiger vorkommt, haben es bereits implementiert). Die Spezifikation stimmt nicht immer mit der Implementierung überein – stellen Sie sich vor, wie viel schlimmer es wäre, wenn es keine Koordination mit/Unterstützung von Anbietern gäbe.
Weiß jemand, warum die Verwendung von "" den Browser nicht zu Entscheidungen befähigt? Ich bin froh, es zu verwenden und vielen Dank für diesen Beitrag, Chris, aber ich habe mich nur gefragt, warum.
Verwenden von was? Es wird mir nur "" angezeigt.
<picture>ist dafür gedacht, wenn Sie tatsächlich verschiedene Bilder (nicht nur verschiedene Auflösungen) in verschiedenen Größen austauschen müssen.Beispiele
Wenn Sie ein Bannerbild haben, das das gesamte Fenster einnehmen soll, haben Sie möglicherweise stark unterschiedlich zugeschnittene Versionen des Bildes im Hoch- und Querformat. Derzeit müssten Sie ein CSS-Hintergrundbild anstelle eines Markup-Bildes verwenden, wenn Sie verschiedene Bilddateien austauschen möchten.
Wenn Sie ein Diagramm mit Text haben, haben Sie möglicherweise eine kompaktere Version mit weniger Text, der in einer größeren Schriftgröße im Verhältnis zum Rest des Bildes angezeigt wird. (Sie können dies mit einer einzelnen SVG-Bilddatei umgehen, aber das ist ein großer Aufwand und erfordert viel benutzerdefiniertes CSS, um den Text auszublenden oder anzuzeigen.)
In diesen Situationen könnte das Layout/Design unbrauchbar oder zumindest unschön werden, wenn der Browser die falsche Datei einfügt.
Leider werden
srcsetundpicturelaut caniuse.com von den derzeit verfügbaren Browsern nicht umfassend unterstützt.Hoffentlich werden sie bis Ende des Jahres implementiert.
@Victor: Die Verwendung von img mit dem srcset-Attribut ist auch mit Browsern, die es nicht unterstützen, sicher, da Sie auch ein src-Attribut verwenden. Browser, die srcset unterstützen, nutzen die neuen Funktionen, diejenigen, die es nicht tun, greifen auf das src-Attribut zurück.
Sie können auch das PictureFill Polyfill verwenden, um älteren Browsern die Unterstützung für das picture-Element und srcset hinzuzufügen.
Es scheint, dass die wichtigsten mobilen Browser es unterstützen, sodass die Verwendung von src für Ihr Desktop-Bild und srcset für die kleineren Breakpoint-Bilder funktionieren würde.
Das setzt jedoch voraus, dass die mobilen Browser nicht auch src und das entsprechende srcset-Bild herunterladen. Weiß jemand, ob sie schlau genug sind, das zu vermeiden?
Kein Problem: Es gibt kein doppeltes Herunterladen, wenn Sie
srcundsrcsetverwenden – ebenso mit demimgFallback in Browsern, diepictureunterstützen. Es kann in diesem Bereich knifflig werden, wenn Sie mit Polyfills arbeiten, aber wenn Sie sich auf die nativen Fallback-Muster verlassen, besteht keine Gefahr von verschwendeten Downloads.Ich verwende Picturefill, um verschiedene Größen desselben Bildes basierend auf den Breakpoints meiner Website auszutauschen. Wenn der Bildschirm klein ist, erhält er das kleinste Bild (Abmessungen und Dateigröße). Mit srcset erhält ein Retina-Bildschirm bei kleiner Bildschirmgröße nicht mehr das kleinste Bild. Wenn ich es aus Performance-Gründen möchte, sollte ich dann wirklich bei picture bleiben, richtig?
Wenn ich das richtig verstehe, ist es trivial, Retina-Bilder in unserem CMS zu unterstützen, wo sie derzeit in tatsächlicher Größe angezeigt werden. Wir würden damit beginnen, ein srcset mit dem normalen Bild (auch im src-Attribut) und dem 2x-Bild (mit Pixelgrößen) hinzuzufügen, dann sizes="Breite des Originalbildes in Pixel" setzen. Ich nehme an, es wird nur schwierig, wenn man trickreicher mit der Größe umgehen muss, mit der das Bild angezeigt wird...
Die 100vw Annahme für sizes ist interessant, aber ich nehme an, dieser Prozess muss in Abwesenheit von CSS ablaufen, so dass er nicht 100 % der Containerbreite oder ähnliches annehmen kann.
Guter Beitrag, Chris… Ihr Blog hält mich auf dem Laufenden und lässt mich Webdesign nie bereuen.
Warum ist es besser, 500w und 1000w in srcset anstelle von nur das kleinere Bild in src und das größere Bild in srcset mit 2x zu verwenden?
Wie verwende ich responsive Bilder als Hintergrundbild?
Media Queries!
Sehr informativ, danke!
Grundsätzlich ist
srcsetauf einemimg-Tag sofort einsatzbereit, da es keine Nachteile hat, wenn ein Browser es nicht unterstützt. Keine doppelten Downloads. Nur Verbesserungen.Ich habe zwei Sätze gefunden, die möglicherweise korrigiert werden müssen.
Hallo Chris, ich habe diese Artikel auf vielen Seiten verlinkt gesehen, endlich da… Nützlicher Artikel, wie immer.
Ein bisschen unverschämte Eigenwerbung.
Sie können sich mein WordPress-Plugin Responsify WP ansehen, das sowohl
pictureals auchspanals Markup-Muster unterstützt. Es kann sich auch um Hintergrundbilder kümmern.Eine neue Version, die srcset/sizes unterstützt, wird in ein paar Tagen veröffentlicht :)
Aber ich muss sagen, ich fand es sehr schwer, mich in die Funktionsweise der srcset/sizes-Attribute einzuarbeiten.
Falls Sie den w-Deskriptor verwenden. Ich würde empfehlen, das src-Fallback-Bild auch im srcset-Attribut zu beschreiben.
Ich verwende dies derzeit auf einer Website, die ich entwickle, was großartig für die Bildklarheit ist, aber ich denke, es muss irgendwie Bandbreite berücksichtigen. Ich speichere 1x-Bilder, die bei 60 % optimiert sind, 2x-Bilder, die bei 20 % optimiert sind, und verwende SVG überall, wo ich kann, was hilft, aber es ergibt keinen Sinn, wenn jemand ein 2x-Display auf seinem Telefon hat und Sie das größte Bild laden (damit es im Grunde gut aussieht), was seltsam ist, wenn man bedenkt, dass wir vor nicht allzu langer Zeit kleinere Bilder laden wollten, damit Websites und Bilder schneller geladen werden… Jetzt laden wir größere Bilder.
Wir haben so viel Zeit damit verbracht, HTTP-Anfragen, Sprites, dann Icon-Fonts, jetzt SVGs für Geschwindigkeit, Geschwindigkeit, Geschwindigkeit zu reduzieren. Laden wir also jetzt das größte Bild, das wir nur basierend auf der Pixeldichte laden können. Helfen Sie mir zu verstehen?
Danke!
Nun, SVG ist für mehr als nur Geschwindigkeit, aber hoffentlich ging der Punkt nicht verloren.
Deshalb wird die nächste Weiterentwicklung von responsiven Bildern Browser-Optionen beinhalten, die es dem Benutzer ermöglichen zu entscheiden, ob er das hochauflösende Bild oder die Low-Bandwidth-Datei möchte. Für mobile Browser würde dies idealerweise dem Benutzer erlauben, unterschiedliche Einstellungen zu haben, je nachdem, ob er mobile Netzwerke oder WLAN nutzt – oder vielleicht sogar spezifischer, unter Berücksichtigung von Roaming-Gebühren und langsamen Shared-WLANs.
Sobald der Browser über diese Daten zu Benutzereinstellungen verfügt, wird er diese bei der Entscheidung berücksichtigen, welche Datei aus einer Source-Set-Liste heruntergeladen werden soll. Aber wie Chris (der andere Chris) im Beitrag beschreibt, würden diese Browser-Optimierungsentscheidungen nur für mehrere Werte innerhalb eines
srcset-Attributs gelten, nicht für mehrere<source>-Elemente innerhalb eines<picture>.Opera bietet bereits einen Browser-Modus zur Reduzierung von Downloadgrößen, bei dem Sie den Browser so einstellen können, dass er Dateien auf den Proxy-Servern von Opera komprimiert, um schnellere, wenn auch niedrigere Auflösung, Websites zu erhalten. Ich vermute, sie werden
srcset-Optionen bereits (oder bald) berücksichtigen, um die leichteste Datei für Leute auszuwählen, die diesen "Turbo"-Modus verwenden.Nun, ein komplexes zu implementieren. Jedoch ein nützliches.
Chris,
Dies ist das erste Mal, dass ich erfahren habe, dass Bilder responsiv gemacht werden können. Ich werde versuchen, dies zu implementieren.
Ich werde mich melden, wenn ich Probleme habe.
Danke Chris, guter Artikel! Was mich bei beiden Konzepten immer noch stört, sind die doppelten Breakpoint-Definitionen bei jedem Element. Es gibt eine bessere, elegantere Lösung dafür mit anzeixer.js, leider ist sie nicht sehr bekannt – also schaut sie euch bitte an und verbreitet die Nachricht! ;) Ich habe einen Blogbeitrag geschrieben, wie man eine einfache responsive Bildlösung basierend darauf implementiert: http://www.andre-abt.com/2013/09/16/responsive-breakpoints-and-images
Wirklich großartiger Artikel darüber, wie man srcset verwendet. Ich denke, dass zu viele Entwickler die eingebauten Funktionen der Browser tatsächlich nicht nutzen, sie können Ihnen sehr helfen!
Ich denke, sobald dies von allen Browsern unterstützt wird, werde ich sicherlich anfangen, srcset zu verwenden, es scheint, dass es im Moment sinnvoll ist, width = "100%" für jetzt oder irgendeine Art von Prozentangabe zu verwenden. Danke für den Share und die zukünftige Info!
Teelah, Sie können beides verwenden.
Beispiel
Sie haben ein Bild desselben Hauses in 3 verschiedenen Größen. Extra-groß (1600 Pixel breit, egal wie hoch), groß (1200 Pixel breit, egal wie hoch) und mittel (usw.). Sie können diesen Bildcontainer auf 100 % Breite setzen, während Sie je nach Anzeigebereich und Pixeldichte nur das passende Bild darin laden.
Ich habe vor ein paar Monaten verschiedene Teile aus alten Code-Schnipseln zusammengestellt, um etwas Ähnliches zu tun.
Sie können angeben, welches Bild für welchen Ansichtsmodus, plus ein Standard-src für den guten alten Spinner, wenn Sie Lazy Load anhängen.
Die Höhe und Breite können für das Bild angegeben oder dynamisch berechnet werden, um die Google Page Speed-Anforderung für Bildabmessungen für img (Page Repaint) zu erfüllen.
Nicht perfekt, aber es erfüllt meine Anforderungen für Bootstrap 3 responsive Bilder.
https://github.com/ArranM/BootstrapImageReplacement
und der js-Code ist hier
https://github.com/ArranM/BootstrapImageReplacement/blob/Master/BootstrapImageReplace/Scripts/ImageReplace.js
Ich hoffe, es hilft jemandem eines Tages.
Vielen Dank, dass Sie diese großartige Methode für responsive Bilder geteilt haben. Sie funktioniert einwandfrei!
Sie alle sind am Puls der Zeit; die Nutzer sind es nicht.
Wirklich nützlicher Beitrag, und einer, den ich anfangen werde zu implementieren.
Vor diesem Beitrag hatte ich darüber nachgedacht, ein Platzhalterbild (weniger als 1 KB) zu verwenden und dann eine Reihe von Bildern als Datenattribute (klein, mittel und groß) festzulegen, wobei ein bestimmtes Bild basierend auf der Bildschirmbreite mit JavaScript geladen wird. Dies ist jedoch eine viel bessere Lösung. Danke.
Toller Artikel. Ausgezeichnete Erklärungen.
Hacking srcset und sizes, um Art-Direction-Zuschnitte auf kleinen Geräten zu erzwingen.
Gibt es eine Alternative dazu, wenn man Hintergrundbilder verwendet? Ich finde es nützlicher für Hintergrundbilder, da dies die riesigen Bilder sind, die meistens skaliert werden müssen.
@Jose: Verwenden Sie einfach verschiedene "background-image"-Attribute in Ihren Zielelementen innerhalb Ihrer Media Queries.
@Andre: Ich bin mit dieser Technik vertraut, frage mich nur, ob es eine Möglichkeit gab, explizit ein eindeutiges Hintergrundbild für jeden Breakpoint anzugeben. Danke.
Ich habe eine Frage zum HTML-Beispiel im Originalbeitrag: Woher weiß der Browser genau, dass das kleine Bild eine Breite von 500 Pixeln hat?
Meiner Meinung nach ist die Angabe eines Bildes nur in
src, aber nicht insrcsetnur mit der 1,5x/2x/3x-Syntax sinnvoll. Wenn Bildbreiten (200w, 400w) insrcsetangegeben werden, sollte das Fallback-Bild auch insrcsetangegeben werden.Oder übersehe ich etwas?
Gute Frage. Ich denke, idealerweise müsste "small" im srcset-Attribut wiederholt werden, damit dies richtig funktioniert.
<img src="small.jpg" srcset="small.jpg 500w, medium.jpg 1000w, large.jpg 2000w" alt="yah">Können Sie das bestätigen, Chris?
Insgesamt ein guter Weg, um responsive Bilder auf mehreren Geräten mit mehreren Auflösungen bereitzustellen.
Kennt jemand eine Lösung für die Manipulation von Bildern mit Javascript/jQuery, die mit der srcset-Methode generiert werden? Zum Beispiel bricht dieser sehr einfache jQuery-Bildwechsel-Code in Chrome/Opera, da er das "src"-Attribut anscheinend komplett ignoriert.
Idealerweise möchte ich nicht einmal den "src"-Wert abgreifen, aber ich sehe nicht, wo Chrome/Opera angibt, welches Bild es ausgewählt hat, um diesen Wert dann abgreifen und woanders verwenden zu können.
Jede Meinung oder Idee wäre willkommen. Danke!
Egal. Es scheint, dass es an diesem Link jetzt funktioniert.
Ich habe mir src-set angesehen, aber es scheint, dass wir, obwohl wir viel darüber reden, die tatsächliche praktische Anwendung ohne Polyfills so gut wie unmöglich oder unpraktisch ist.
Zum Zeitpunkt des Schreibens
* Firefox benötigt ein Entwicklerflag, das aktiviert werden muss.
* Mobile WebKit unterstützt nur die -x-Syntax, die für ein Bild, das von klein bis riesig skaliert (z. B. ein Heldenbild), fast nutzlos ist. Noch keine -w-Syntax-Unterstützung ab iOS 8.1.
* Keine Unterstützung im Android AOSP Browser ab 4.4.4.
* Keine Unterstützung in IE.
* Perverserweise hat Chrome 38 auf dem Desktop (und Opera inzwischen im Grunde) die beste Unterstützung, obwohl wir das besonders für Mobilgeräte brauchen.
Es ist schön, darüber zu reden und es mit picture zu vergleichen (das noch weniger Unterstützung hat), aber es scheint, dass selbst srcset noch nicht produktionsreif ist – und praktisch noch eine Weile nicht. Seufz…
@Mike Ich stimme dem vollkommen zu.
Ich habe mich gerade eine Weile damit beschäftigt. Wenn Sie ein
sizes-Attribut verwenden, stellen Sie sicher, dass Sie Ihre schmalste Bildgröße zuerst eingeben. Nicht die kleinste Media Query.Z.B.
(min-width: 62.5em) 25vw, (min-width: 30em) 50vw, 100vwnicht (was man vielleicht erwarten würde)
(min-width: 30em) 50vw, (min-width: 62.5em) 25vw, 100vwIch bevorzuge viel einfachere Lösungen wie Bildero, indem Sie Ihr Quellbild hochladen (ich meine, Sie müssen nicht small.jpg medium.jpg und large.jpg erstellen) – nur das Originalbild und durch einfaches Einfügen von JS können Sie wirklich responsive Bilder haben.
Bildero erkennt automatisch die Bildschirmauflösung Ihrer Besucher und erstellt im Handumdrehen ein perfekt passendes Bild aus Ihrem Originalbild. Ich empfehle es jedem, weil es viel Zeit und Geld spart (Zeit ist Geld, also spart es Geld^2 :D).