Ich habe eine Reihe von Bibliotheken (einschließlich meiner eigenen) verwendet, um Assets basierend auf Medienabfragen, die ich in CSS-Dateien beschrieben habe, dynamisch zu laden. Zum Beispiel:Zugriff auf CSS-Medienabfrageregeln über JavaScript/DOM
In CSS:
@media screen and (max-width: 480px) {
.foo {
display: none;
}
}
Und mit einem Asset-Loader; require.js, modernizr.js usw. oder mit window.matchMedia
und addListener()
Funktionen zugeordnet:
if (function("screen and (max-width: 480px)")){
// Load several files
load(['mobile.js','mobile.css']);
}
sie zweimal Deklarieren ist umständlich/albern und so weit wie ich finden kann, werden alle JS Helfer Bibliotheken und Asset Lader benötigen Sie die Medien-Anfragen zu wiederholen, anstatt Lokalisieren sie programmgesteuert von JS/DOM.
Also habe ich die Möglichkeit untersucht, die Werte programmgesteuert über document.stylesheets
zuzugreifen, aber ich bin mir nicht sicher, ob sie zugänglich sind und es scheint sehr wenig Dokumentation zu suggerieren, dass sie sind.
Am weitesten entfernt bin ich auf der Suche nach CSSMediaRule
und unter Verwendung console.dir(document.stylesheets)
unter anderem das Stylesheet-Objekt zu erkunden.
Es werden jedoch keine Referenzen (innerhalb document.stylesheets
) zu den tatsächlichen Medienabfrageregeln in CSS verwendet - nur die Klassen, die als Ergebnis der Medienabfragen angewendet werden ... Was ich programmatisch zu finden versuche, ist :
"-Bildschirm und (max-width: 480px)"
gibt es eine Möglichkeit, solche CSS-Medienabfrage Regeln über JavaScript/DOM zugreifen?
Hoppla, falschen Link, [hier ist der Artikel, den ich bei coderwall suchen] (https: // coderwall. com/p/_ldtkg) – steveax
Gute Frage. Für meine Zwecke habe ich immer überprüft, ob bestimmte Elemente sichtbar waren oder nicht, da meine JavaScript-Interaktion für diese Elemente gelten würde. Es sollte jedoch eine bessere, allgemeinere Lösung geben. – Brad
Hey, überprüfen Sie es. Es kann eine Lösung sein. https://github.com/natansmith/adapt/blob/master/assets/js/adapt.js –