私はCSSファイルで概説したメディアクエリに基づいてアセットを動的にロードするために、多数のライブラリ(自分自身を含む)を使用してきました。たとえば、次のようにCSSでJavaScript/DOMを使用したCSSメディアクエリルールへのアクセス
:
資産ローダーを使用して@media screen and (max-width: 480px) {
.foo {
display: none;
}
}
と。 require.js、modernizr.jsなどまたはwindow.matchMedia
を使用し、関連するaddListener()
機能:
if (function("screen and (max-width: 480px)")){
// Load several files
load(['mobile.js','mobile.css']);
}
二回、それらを宣言することは、私が見つけることができる限り/ぎこちない愚かとされ、すべてのJSヘルパーライブラリと資産ローダーは、メディアクエリを繰り返すのではなくする必要がそれらを見つけることはプログラムによって JS/DOMから。
私はdocument.stylesheets
経由でプログラムで値にアクセスする機能を探っていましたが、アクセス可能かどうかはわかりません。
最も遠いのはCSSMediaRule
を探して、console.dir(document.stylesheets)
を使ってスタイルシートオブジェクトを探索することです。
しかし、CSSで使用されている実際のメディアクエリルールは参照されません(document.stylesheets
内) - メディアクエリの結果として適用されるクラスのみ...プログラムで見つけようとしているのは、 :
"画面と(最大幅:480PX)"
には、JavaScript/DOMを経由して、このようなCSSメディアクエリにルールにアクセスする方法はありますか? (IE < = 8で動作しないためだけ> = 9 IEで利用可能な "CSSMediaRule" クラス)
var styleSheet = document.styleSheets[0];
var rules = styleSheet.cssRules || styleSheet.rules; // IE <= 8 use "rules" property
ための規則のリスト、使用中CSSMediaRule物体を検出:GETルールについて
おっと、間違ってリンク、(HTTPS [ここで私はcoderwallで探していた記事です]。 com/p/_ldtkg) – steveax
良い質問です。私の目的のために、JavaScriptインタラクションがそれらの要素に当てはまるので、私はいつも特定の要素が可視かどうかをチェックしてきました。しかし、より良い、より一般的な解決策があるはずです。 – Brad
ねえ、それをチェックしてください。それは解決策になる可能性があります。 https://github.com/nathansmith/adapt/blob/master/assets/js/adapt.js –