MediaQueryList
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
MediaQueryList
オブジェクトは文書に適用されているメディアクエリーの情報を格納し、文書の状態に対する即時かつイベント駆動の照合に対応します。
MediaQueryList
は matchMedia()
を window
オブジェクト上で呼び出すことで作成することができます。結果として得られるオブジェクトは、メディアクエリーの状態が変化したとき (つまり、メディアクエリーのテストが true
の評価が開始または停止したとき) に、リスナーへの通知の送信を処理します。
これにより、定期的に値をポーリングするのではなく、文書を監視してメディアクエリーが変更されたときに検出することが可能になり、メディアクエリーの状態に基づいて文書にプログラム的に変更を加えることができるので、アダプティブデザインにとても便利です。
インスタンスプロパティ
MediaQueryList
インターフェイスには、親インターフェイスである EventTarget
から継承したプロパティがあります。
インスタンスメソッド
MediaQueryList
インターフェイスには、親インターフェイスである EventTarget
から継承したメソッドがあります。
addListener()
非推奨;-
MediaQueryList
にコールバックを追加します。このコールバックは、メディアクエリーの状態 (リスト内のメディアクエリーと文書が一致するかどうか) が変化するたびに呼び出されます。このメソッドは、主に下位互換性のために存在します。可能であれば、代わりにaddEventListener()
を使用してchange
イベントを監視してください。 removeListener()
非推奨;-
指定されたリスナーコールバックを、
MediaQueryList
でメディアクエリーの状態が変化するたび、すなわちMediaQueryList
に列挙されたメディアクエリーの一致・不一致の状態が変化するに呼び出されるコールバックから削除します。このメソッドは下位互換性のために保持されています。可能であれば、一般的にremoveEventListener()
を使用して、(以前addEventListener()
を使用して追加された)変更通知コールバックを削除してください。
イベント
例
このシンプルな例では、 MediaQueryList
を作成し、メディアクエリーの状態が変化したときにそれを検出するリスナーを設定し、それがページの表示を変更するときにカスタム関数を実行します。
const para = document.querySelector("p");
const mql = window.matchMedia("(max-width: 600px)");
function screenTest(e) {
if (e.matches) {
/* the viewport is 600 pixels wide or less */
para.textContent = "This is a narrow screen — less than 600px wide.";
document.body.style.backgroundColor = "red";
} else {
/* the viewport is more than 600 pixels wide */
para.textContent = "This is a wide screen — more than 600px wide.";
document.body.style.backgroundColor = "blue";
}
}
mql.addEventListener("change", screenTest);
他の例は個別のプロパティやメソッドのページにあります。
仕様書
Specification |
---|
CSSOM View Module # the-mediaquerylist-interface |
ブラウザーの互換性
BCD tables only load in the browser