Enquire.js ist eine JavaScript-Bibliothek, die ich für die Arbeit mit Media Queries in JavaScript erstellt habe.
„Halt! Rückzug! Media Queries in JavaScript?! Was für ein Scheusal ist das?“
Obwohl die Prämisse seltsam erscheinen mag, ist es wirklich eine praktische Ergänzung für das Werkzeugrepertoire des responsiven Designs.
Der Knackpunkt
Enquire.js ist eine leichtgewichtige, reine JavaScript-Bibliothek zur Verwaltung von Media Queries. Sie ist weniger als 1 KB groß, wenn sie GZIP-komprimiert und minimiert ist, und hat absolut keine Abhängigkeiten. Ja, Sie haben richtig gelesen – keine Abhängigkeiten, nicht einmal jQuery! Das Einzige, was Sie tun müssen, ist, ein matchMedia Polyfill bereitzustellen, wenn Sie Browser ohne native Implementierung unterstützen möchten.
Anwendungsfälle
- Responsives Design
- Mobile-First Design
- Unterstützung älterer Browser mit Media Queries
Daseinsberechtigung
Wie und warum ist das entstanden? Ich denke, der einfachste Weg, dies zu erklären, ist ein einfaches Szenario…
Stellen Sie sich vor, Sie haben eine etablierte Website, die derzeit feste Breiten hat und für Geräte mit großen Bildschirmen konzipiert ist. Sie haben all den Trubel um dieses „responsive Design“-Geschäft gehört und möchten daran teilhaben. Also beginnen Sie pflichtbewusst mit der Gestaltung und Planung, wie Ihre Website auf Geräten mit kleinen Bildschirmen funktionieren könnte. Sie haben alles weggelassen, Ihren Floating-Sidebar ausgeblendet und die Größe Ihrer Formularelemente erhöht. Großartig!
Aber was ist mit diesem lästigen Menü? Es ist aufwendig, hat mehrere Ebenen und nutzt CSS-Hover-Effekte, um die tiefere Hierarchie anzuzeigen – mit anderen Worten, es funktioniert nicht auf einem Touch-Gerät mit kleinem Bildschirm!
Also graben Sie ein wenig bei Google und stoßen auf eine clevere Lösung, um ein Menü in ein Dropdown umzuwandeln. Hoch fünf für alle, Ihr Menü ist jetzt auf mobilen Touch-Geräten funktionsfähig! Aber Sie haben dieses nagende Gefühl. Sie sind sich nicht ganz sicher, was es ist, aber etwas stimmt immer noch nicht ganz. Ah ja, das ist es; Sie führen diesen Code sogar für Geräte mit großen Bildschirmen aus, obwohl diese ihn absolut nicht benötigen! Sie vergießen eine kleine Träne für die verschwendeten CPU-Zyklen und wünschen sich, es gäbe eine Möglichkeit, dieses JavaScript selektiv auszuführen.
Ein neuer Herausforderer erscheint!
Hier kommt enquire ins Spiel, um zu helfen.
Vorerst bleiben wir beim Szenario „Menü in ein Dropdown umwandeln“, wobei das Menü erscheint, wenn das Fenster kleiner als 960 Pixel ist. Mit enquire ist es so einfach:
enquire.register("max-width: 960px", function() {
// put Chris' code here to convert your menu to a dropdown
});
All dies bedeutet nur, dass enquire die bereitgestellte Funktion nur aufruft, wenn die angegebene Media-Query übereinstimmt. Und so sparen Sie die wertvollen CPU-Zyklen für Geräte mit großen Bildschirmen. OK, ich erkenne an, dass das etwas albern ist, da mobile Geräte typischerweise über CPUs mit geringerer Leistung verfügen als Geräte mit größeren Bildschirmen, aber es funktioniert auch in umgekehrter Richtung – dem viel besungenen Mobile-First-Ansatz!
Tiefer eintauchen
An dieser Stelle lohnt es sich, kurz die enquire API durchzugehen, bevor wir uns einigen ausführlicheren Szenarien widmen. Das vorherige Beispiel zeigte den einfachsten Anwendungsfall für enquire – die Übergabe einer Funktion als zweiten Parameter, die ausgeführt wird, wenn eine Media-Query übereinstimmt. Dies ist in den meisten Szenarien ausreichend, aber enquire kann mehr bieten, wenn Sie anspruchsvollere Anforderungen haben. Sie können der register-Methode ein Objekt übergeben, wie hier:
enquire.register("screen and (max-width: 1000px)", {
// REQUIRED
// Triggered when the media query transitions
// from *unmatched* to *matched*
match : function() {},
// OPTIONAL
// Triggered when the media query transitions
// from a *matched* to *unmatched*
unmatch : function() {},
// OPTIONAL
// Triggered once immediately upon registration of handler
setup : function() {},
// OPTIONAL
// Defaults to false
// If true, defers execution of the setup function
// until the first media query is matched (still just once)
deferSetup : true
});
Diese Signatur gibt Ihnen die volle Kontrolle und ermöglicht es Ihnen, genau zu definieren, was passieren soll und wann es passieren soll. Dies wird erst wirklich nützlich, wenn Sie die listen-Funktion von enquire aufrufen (mehr dazu gleich).
Beispiele
Kommen wir also zu einigen Beispielen, die die erweiterten Funktionen in Aktion zeigen.
Faux Media Queries in älteren Browsern
Enquire.js kann verwendet werden, um in älteren Browsern rudimentäre Media Queries zu simulieren. Bitte verwenden Sie diesen Ansatz jedoch nicht als Ersatz für echte Media Queries in Ihrem CSS, sondern nur als Monkey-Patch für ältere Browser (jQuery wird in diesem Beispiel verwendet).
$(function() {
// cache body for speed
var $body = $("body");
// DRY up handler creation
function handlerFactory(className) {
return {
match : function() {
$body.addClass(className);
},
unmatch : function() {
$body.removeClass(className);
}
};
}
// hook up our "media queries"
enquire
.register("screen and (max-width : 320px)", handlerFactory("lt-320"))
.register("screen and (max-width : 640px)", handlerFactory("lt-640"))
.listen();
});
Hier verwenden wir match- und unmatch-Handler, um dem <body>-Element Klassen hinzuzufügen oder zu entfernen, was es uns ermöglicht, Stile für Bildschirme unterschiedlicher Größe anzusprechen. Beachten Sie, dass wir Aufrufe aller Funktionen von enquire verketten können.
Besonders hervorzuheben ist hier der Aufruf der listen-Funktion, damit enquire auf Browser-Resize- und Orientierungswechselereignisse reagiert (obwohl Orientierungswechselereignisse in älteren Browsern unwahrscheinlich sind). Für optimale Leistung ist listen gedrosselt, um nur einmal pro Zeiteinheit auf ein Ereignis zu reagieren. Standardmäßig sind dies 500 ms, aber Sie können Ihre eigene Drosselung festlegen, indem Sie sie als Parameter an listen übergeben.
// 10000 milliseconds = 10 seconds. Why not?!
enquire.listen(10000);
Dogfooding
Lassen Sie uns ein Beispiel für die reale Anwendung von enquire durchgehen, das von der Projektseite von enquire.js stammt (Dogfooding FTW!). Hier wollte ich, dass die Seite so schnell wie möglich geladen wird, indem standardmäßig nur das absolute Minimum an JavaScript geladen wird und alles darüber hinaus asynchron nachgeladen wird, nur wenn es benötigt wird. So erhalten Geräte mit kleinen Bildschirmen (und damit auch solche, die wahrscheinlich eine langsame Verbindung haben) die schnellstmögliche Seitenladezeit, und nur Geräte mit großen Bildschirmen müssen sich mit den zusätzlichen Ressourcen auseinandersetzen.
Insbesondere wird dieses Muster verwendet, um allen Code zu laden, der zum Erstellen und Rendern der Seitenleiste „Jump To“ der Projektseite erforderlich ist. Dieses Beispiel ist leicht vereinfacht, um nicht von den wichtigen Konzepten abzulenken.
$(function() {
$toc = $(".toc");
enquire.register("screen and (min-width: 1310px)", [{
deferSetup : true,
setup : function () {
// use Modernizr's yepnope to load
// additional scripts and manage callbacks
Modernizr.load([
{
load: "js/jquery.toc.js",
callback : function() {
// code to generate "Jump To" list
// and append to body
}
},
// load in the bootstrap plugins.
// they hook themselves up via their data-API
"js/vendor/bootstrap-scrollspy.js",
"js/vendor/bootstrap-affix.js"
]);
},
match : function() {
$toc.fadeIn();
},
unmatch : function() {
$toc.hide();
}
}]).listen();
});
Hier wurden zwei neue Optionen eingeführt – setup und deferSetup. setup ist eine Funktion, die nur einmal aufgerufen wird, was großartig ist, um alle aufwendigen DOM-Manipulationen im Voraus zu erledigen. Standardmäßig wird setup *sofort nach der Registrierung Ihres Query-Handlers aufgerufen*, unabhängig davon, ob die Query bereits übereinstimmt. Wenn Sie jedoch das Flag deferSetup angeben, können wir das Setup auf den ersten Abgleich verschieben, wenn eine Query übereinstimmt.
In diesem Fall ist es offensichtlich sinnvoll, da Skripte nur für Geräte mit großen Bildschirmen geladen werden. Die Funktionen match und unmatch sind dann dafür zuständig, die Liste „Jump To“ einfach ein- und auszublenden.
Weitere Beispiele
Einige weitere Szenarien, die enquire mühelos bewältigen würde:
- Responsive Bilder
- Verwenden Sie
data-*-Attribute und wechseln Sie dassrceines Bildes je nachdem, welche Media-Query übereinstimmt.
- Verwenden Sie
- Inhalte neu anordnen
- Manchmal ist es nicht so einfach, Elemente auf kleinen Bildschirmen zu stapeln; Sie möchten vielleicht, dass Inhalte in einer völlig anderen Reihenfolge erscheinen.
- Auch hier würde ich einen deklarativen Ansatz mit
data-*-Attributen empfehlen, damit Sie Quell- und Zielelemente auswählen können.
Es gibt noch mehr...
Enquire.js hat noch mehr zu bieten! Sie können mehrere Handler pro Query und auch mehrere Queries registrieren, was Ihnen ultimative Flexibilität gibt! Weitere Informationen hierzu finden Sie auf der Projektseite von enquire.js.
Herunterladen, Forken und Beitragen!
Downloads und Quellcode finden Sie auf dem Projekt auf GitHub. Wenn Sie beitragen möchten, tun Sie dies bitte, ich würde mich über Meinungen, Gedanken und Ideen von anderen freuen. Forken Sie nach Herzenslust und machen Sie einen Pull-Request mit allen Änderungen. Wenn Sie auf Probleme stoßen, erstellen Sie gerne ein Issue auf GitHub und ich werde das Problem duly beheben :)
Lizenz
Das Projekt ist unter der MIT-Lizenz lizenziert, sodass Sie es nach Belieben verwenden können.
Hmmm... dieser Code ist interessant. Gute Arbeit!!!
Danke für die freundlichen Worte! Ich würde mich über jedes Feedback freuen.
Fantastisch!
Danke!
Danke, ich werde es testen!
Eine Frage:
Können wir andere Media Queries verwenden (wie Device Pixel Ratio) oder nur max|min width?
Hallo, Autor hier. Ich gehe davon aus, dass es funktionieren sollte. Wenn nicht, melden Sie sich bei mir (stellen Sie gerne ein Issue auf GitHub ein) und ich werde es weiter untersuchen. Viel Spaß :-)
Sehr gute Arbeit. Ich habe bald etwas, das ich damit ausprobieren werde. Bin auch neugierig auf andere Media Queries wie eQRoeil erwähnt hat.
Danke! Freut mich, dass Sie eine Verwendung dafür gefunden haben.
Siehe meine Antwort an eQRoeil oben, es sollte funktionieren. Ich bin daran interessiert, dass enquire jede Situation abdeckt. Wenn Sie also auf Probleme stoßen, erstellen Sie ein Issue auf GitHub und ich werde versuchen, es zu beheben.
Ich habe vor ein paar Tagen über etwas Ähnliches nachgedacht. Werde dies definitiv in meinem nächsten Projekt berücksichtigen!
Ich habe Ihre Gedanken gelesen! Okay, vielleicht nicht, aber es ist gut zu hören, dass es Ihren Bedürfnissen entsprechen könnte!
Ich kannte diese Bibliothek nicht, vielen Dank für die sehr klaren Beispiele. Die Idee, dies mit data-* für den Bildaustausch zu verwenden, sieht sehr vielversprechend aus, ich muss mich mit diesem Thema beschäftigen.
Es ist eine ziemlich neue Bibliothek, deshalb haben Sie sie vielleicht noch nicht gesehen. Gut zu hören, dass die Beispiele hilfreich waren! Die Projektseite ist im Moment etwas karg, aber ich werde sie in naher Zukunft mit vielen weiteren Beispielen, einschließlich responsiver Bilder, erweitern :-)
Vielen Dank für diesen Artikel. Ich suche schon seit einiger Zeit nach solchen Werkzeugen. Als Alternative zu enquire.js habe ich Harvey gefunden. Es ist etwas komplizierter, aber einen Blick wert.
Hier ist der Link: https://github.com/harvesthq/harvey
Hallo basti1350, ich bin Harvey irgendwann mal über den Weg gelaufen. Wie Sie sagen, ist Harvey komplizierter und zwingt Sie auch, ein Polyfill zu verwenden, selbst wenn Sie nur Browser mit einer nativen Implementierung unterstützen möchten. Ich habe enquire auf Einfachheit und Effizienz optimiert, aber es hat immer noch alle Funktionen von Harvey und mehr!
Sie haben Recht, die Abhängigkeit vom Polyfill hat mich auch gestört. Ich habe enquieren heute ausprobiert und es funktioniert sehr gut.
Danke für das Teilen.
Genau das, wonach ich gesucht habe. Ich frage mich jedoch, ob es auch möglich ist, `em`-Werte in den Media-Queries zu verwenden.
enquire.register("screen and (min-width: 40em)", {Ist das möglich?
Sollte kein Problem darstellen :-) Wenn Sie jedoch auf Probleme stoßen, lassen Sie es mich über GitHub wissen.
Ich habe noch nie von data-* gehört und bin neugierig, mehr darüber zu erfahren. Kann mir jemand Ressourcen dazu nennen?
Die data-*-Attribute sind fantastisch! Sie wurden als Teil von HTML5 eingeführt, um benutzerdefinierte Anwendungsstil-Daten zu speichern. Sie definieren Ihre eigenen (ohne die HTML-Validierung zu brechen) und verwenden sie nach Belieben. Eine großartige Möglichkeit, JavaScript-Funktionalität deklarativ zu verbinden.
Weitere Informationen: http://html5doctor.com/html5-custom-data-attributes/
Aha, klingt fantastisch! Danke, Nick!
Wenn Sie großartige Anwendungsfälle dafür sehen möchten, schauen Sie sich die JavaScript-Widgets von Twitter Bootstrap an, da sie alle eine „data API“ haben. Dies ist meine bevorzugte Methode geworden, um Funktionalität einzubinden.
Das ist großartig, ich werde es in meinem aktuellen Projekt testen :)
Was ich hier vielleicht missverstanden habe, ist, wie man es als Listener für Media-Query-Änderungen verwendet?
Stellen Sie sich Folgendes vor: Ich habe ein Responsive Webdesign, bei dem JavaScript den Hintergrund des Körpers neu einfärben soll.
Der direkte CSS-Weg wäre so:
@media screen and (min-width: 55.5em) { ♒♒body { background: red; } }Ist dasselbe mit enquire.js möglich?
Was ich nicht verstanden habe, ist, wie das
enquire.register("@media screen and (min-width: 55.5em)", function() { $('body').css('background', 'red'); });Aber dies wird nur beim Laden der Seite ausgelöst. Ich dachte, enquire würde als eine Art Listener fungieren und immer ausgelöst werden, sobald eine Media-Query übereinstimmt. Muss ich den register-Handler innerhalb von $(window).resize(function() ausführen?
Stellen Sie sich ein Responsive Webdesign mit verschiedenen Layout-Schritten vor (genau wie die meisten Responsive Webdesigns funktionieren) und ich muss Stile von verschiedenen Elementen anwenden oder entfernen, die zuvor über JS gesetzt wurden. Das mache ich derzeit, indem ich window.with innerhalb eines Resize-Handlers abfrage. Kann ich das mit enquire.js tun?
Hey Matt,
Standardmäßig lauscht enquire aus Effizienzgründen nicht auf Resize-Ereignisse. Glücklicherweise müssen Sie nur
listen()aufrufen, um diese Funktionalität zu erhalten.Sie können einen separaten Aufruf direkt an enquire machen oder ihn an Ihren Registeraufruf anhängen.
Dies bewirkt, dass enquire auf Resize- und Orientierungsereignisse für alle registrierten Queries reagiert (d.h. nicht nur für die eine Query).
Dies wurde im Artikel im Beispiel für Faux Media Queries besprochen. Dogfooding zeigt ein vollständigeres Beispiel. Im Grunde sind die
match- undunmatch-Callbacks das, was Sie wollen.Es gibt jedoch eine kleine Verzögerung zwischen dem Zustand, in dem sich die CSS-Änderungen ändern, und der Auslösung von JS.
Ist es schlecht (performance-technisch), wenn ich den Listener alle 10 Millisekunden aufrufe?
Solange Sie nicht viele Queries mit vielen angehängten Handlern haben, sollte es in Ordnung sein, aber es ist wirklich situationsabhängig. Wenn Sie sehr komplexe oder teure Logik haben, könnten Sie den Browser vorübergehend sperren. Ich würde ein wenig exploratives Testen vorschlagen, um zu sehen, was für Sie funktioniert.
Ich habe auch einige Ideen, wie ich dies mildern kann, also behalten Sie das GitHub-Projekt für Updates im Auge.
Gut gemacht...
Ich werde versuchen, es zu verwenden, um mit deklarativen Ansätzen zur Aktualisierung von HTML-Attributen zu spielen, wie hier beschrieben.
http://www.xanthir.com/blog/b4K_0
http://andydavies.me/blog/2012/08/13/what-if-we-could-use-css-to-manipulate-html-attributes/
Ich habe das heute als Trend-Element auf GitHub gesehen... habe es mir angesehen und mich gefragt, was der Sinn dahinter ist... Dieser Artikel hat mir geholfen, diese nette Bibliothek zu verstehen... und mir geholfen, ihre Verwendung zu verstehen...
Vielen Dank... erstens für die Erstellung dieser Bibliothek... und zweitens für das Verfassen eines hilfreichen Artikels in einfacher Sprache, der leicht zu verstehen ist... und einige Anwendungsfälle klar demonstriert...
Wow, ich wusste nicht einmal, dass es auf GitHub trending ist, bis ich Ihren Kommentar gesehen habe. Was für eine Ehre!
Kein Problem, ich habe es als interessantes Experiment erstellt und dachte, vielleicht finden es andere Leute nützlich. Gut zu sehen, dass ich mich nicht geirrt habe und dass mein Schreiben doch nicht so schlecht ist :-)
Fantastisch! Ich habe solche Dinge auf meine eigene, intuitive Weise gemacht.
Sie kennen doch diese Sache, wo man denkt: „Wenn ich schlau wäre, würde ich eine Bibliothek erstellen, um das abstrakt und wiederverwendbar zu machen… oder ich könnte ein oder zwei Wochen warten und jemand anderes hätte es besser gemacht?“
Das.
Ich liebe diese Community.
Sehr nette Worte! Hoffentlich müssen Sie nicht mehr intuitiv programmieren ;-)
Genau rechtzeitig, wenn ich es brauche. Tolle Arbeit, Leute.
Das ist großartig! Ich brauchte genau so eine Lösung. Danke!
Ich hatte auf ein besseres Bildersatzsystem für responsives Design mit dieser Bibliothek gehofft; es scheint keine Lösung für dynamische Seiten zu sein, da man im Wesentlichen 2-3 Versionen eines Bildes hochladen/erstellen würde.
Andererseits sprechen wir hier über JavaScript, und die PHP-Lösungen (RESS, RWD+ Server-Side Components) mit der GD Library scheinen immer noch der vernünftige Weg für dynamische Seiten zu sein.
Ich suche nach einer RESS-Lösung für Ruby on Rails, habe aber noch keine gefunden; kennt jemand eine, die er teilen kann?
Ups, ich konnte nicht bearbeiten; ich meine, ich wünschte, es gäbe eine Lösung, die den Zustand von „responsive images“ über seine ziemlich großartige Kernfunktionalität hinaus voranbringt. Die Funktion zum Neuanordnen von Inhalten ist ziemlich praktisch, wenn Sie sich nicht mit den technischen CSS-Details auseinandersetzen möchten, um den Effekt zu erzielen, für den viele wie Trent Walton großartige Snippets auf Codepen bereitgestellt haben.
Enquire ist nicht dazu gedacht, spezifische Umstände wie responsive Bilder zu behandeln, sondern ist allgemein genug, um die meisten Umstände im Zusammenhang mit Media Queries und JavaScript zu behandeln. Dies war eine bewusste Entscheidung, es klein und leicht zu halten.
Ich denke, bis es ein Konzept für responsive Bilder nativ in Browsern gibt, kann keine Lösung als mehr als ein Workaround betrachtet werden. Soweit ich weiß, schreibt jede funktionierende Spezifikation für responsive Bilder eine URL für jede Auflösung vor (was typischerweise mehrere Bilder bedeuten würde). Eine Lösung mit enquire ist also vielleicht nicht weit davon entfernt, wie es schließlich funktionieren könnte.
Verstanden. Ich erkenne an, dass ich zu früh gesprochen habe, konnte meinen ursprünglichen Kommentar aber nicht löschen. Ich freue mich darauf, mit Enquire.js zu experimentieren; insbesondere mit den sehr praktischen Faux Media Queries, die es ermöglicht.
Was das Patchen angeht, mache ich normalerweise zuerst 960(~=1024), als Standard (der für Browser geht, die Media Queries nicht unterstützen) und gehe nach oben für eine 1140(>=1200px) Ansicht sowie nach unten für mobile & Porträt-Tablets. Auf diese Weise kann ich spezielle Größenklassen vermeiden, da der Standard ziemlich angemessen sein wird.
Schnelle Frage, Nick: Wie unterscheidet sich das wesentlich von z.B. Modernizr's `Modernizr.mq(‘only screen and (max-width: 768px)’)` Test, der die angegebene Media Query live gegen den aktuellen Zustand des Fensters testet?
Im Grunde gibt es nicht viel Unterschied, wenn Sie beim Laden der Seite nur übereinstimmen und aufheben. Aber enquire geht darüber hinaus, indem es Ihnen ermöglicht, Browser-Ereignisse zu überwachen und die entsprechende Match/Unmatch-Callback *nur dann* aufzurufen, wenn sich der Zustand geändert hat, sodass Sie dies nicht selbst verwalten müssen. Es ermöglicht Ihnen auch, einmalige Setup-Routinen auszuführen, entweder sofort oder bis zum ersten Mal, wenn eine Abfrage übereinstimmt, verzögert. Schließlich können Sie jede Abfrage abschneiden, sodass Sie, wenn Sie einen Mobile-First-Ansatz verfolgen, immer noch Desktop-Erlebnisse für alte Browser wie IE8 liefern können.
Können Sie auch einige Zeilen hinzufügen, um festzustellen, ob das Display Retina ist oder nicht?
Oh, danke, danke!!!
Fantastische Sache
Danke! Es war genau das, was ich brauchte! Auch einfach zu bedienen...
Großartig, gut zu hören :) Wenn Sie auf Probleme stoßen, können Sie gerne ein Problem auf GitHub melden.
Hallo Nick
Glückwunsch zu Ihrem Skript, es hat mir sehr gut gefallen.
Ich frage mich, ob Sie 'listen' noch weiter verbessern können, indem Sie einen anderen Zugriff auf "Event-Timeout" verwenden. Die von mir erstellte Methode reagiert noch schneller, hier ist mein Vorschlag
/* Adds functionality to detect window finish resize event By: Arlind Nushi */ jQuery(function($) { var win = $(window); var win_timeout = null; var time_to_check = 300; win.on('resize', function() { var win_w = win.width(); window.clearTimeout(win_timeout); win_timeout = null; win_timeout = setTimeout(function() { win.trigger('afterresize'); }, time_to_check); }); });Ich hoffe, es hilft Ihnen irgendwie.
Es ist nur ein Vorschlag.
Machen Sie weiter so.
Arlind Nushi aus Laborator
Hallo Arlind,
Es freut mich, dass es Ihnen gefallen hat :) Leider hat enquire keine Abhängigkeiten von jQuery und ich möchte keine Abhängigkeit dazu einführen. Danke für Ihr Hilfeangebot.
Nick
Vielen Dank, dass Sie dies geteilt haben. GENAU das, wonach ich heute gesucht habe! Hat super funktioniert, um eine Reihe von Divs für eine mobile Version einer Website neu zu ordnen, an der ich arbeite.
Großartig! Gut zu hören, dass es gut für Sie funktioniert hat :) Wenn Sie Funktionsvorschläge oder Probleme haben, können Sie mich gerne auf GitHub kontaktieren.
Schön und leicht verständlich!
Habe es in der Vergangenheit selbst gemacht, auch mit Modernizr.eq und meinem eigenen Timer, der diese Funktion immer wieder abruft!
Danke, dass Sie diesen praktischen kleinen Code für die Community bereitstellen!
Leute wie Sie machen das Internet frei und aufgeschlossen!
Machen Sie weiter so, hoffe, in Zukunft noch mehr coole Sachen von Ihnen zu sehen!
Gibt es eine Möglichkeit, dies so zu verwenden, dass die Kriterien der Media Query nicht sowohl in den Stylesheet- als auch in den Javascript-Dateien wiederholt werden müssen?
Wenn mein JavaScript beispielsweise einfach die in der Stylesheet definierten Dimensionen verwendet und jedes Mal, wenn eine andere Media Query ausgelöst wird, nur den gleichen Code (mit unterschiedlichen in der Stylesheet definierten Breiten) neu auswertet, gibt es wirklich keinen Grund, min-width und max-width Kriterien in das JS zu wiederholen.