
JavaScript とメディア クエリ: 包括的なガイド
メディア クエリは、画面の幅、高さ、解像度などのユーザーのデバイスの特性に基づいてスタイルを適用するために使用される強力な CSS 機能です。 JavaScript は、これらの状況の変化に対する動的な応答を可能にし、さまざまなデバイス間でのアプリケーションの動作をより詳細に制御できるようにすることで、メディア クエリのユーティリティを強化します。
1.メディア クエリとは何ですか?
開発者はメディア クエリを使用して、ユーザーのデバイスまたはビューポートのプロパティに基づいて条件付きで適用される CSS ルールを定義できます。
CSS の基本構文:
1 2 3 4 5 | @media (max-width: 768px) {
body {
background-color: lightblue;
}
}
|
ログイン後にコピー
ログイン後にコピー
JavaScript では、Window.matchMedia() メソッドを使用してこれらのメディア クエリを動的に操作できます。
2.メディア クエリで JavaScript を使用する
Window.matchMedia() メソッドを使用すると、メディア クエリをプログラムでテストし、変更にリアルタイムで応答できます。
構文:
1 | const mediaQuery = window.matchMedia( "(max-width: 768px)" );
|
ログイン後にコピー
ログイン後にコピー
クエリが一致するかどうかを確認します:
1 2 3 4 5 | if (mediaQuery.matches) {
console.log( "Viewport is 768px or smaller." );
} else {
console.log( "Viewport is larger than 768px." );
}
|
ログイン後にコピー
3.メディア クエリの変更をリッスンしています
addEventListener メソッドを使用して、メディア クエリ状態の変更をリッスンできます。
例:
1 2 3 4 5 6 7 8 9 10 11 12 | const mediaQuery = window.matchMedia( "(max-width: 768px)" );
function handleMediaQueryChange(e) {
if (e.matches) {
console.log( "Now in mobile view." );
} else {
console.log( "Now in desktop view." );
}
}
mediaQuery.addEventListener( "change" , handleMediaQueryChange);
|
ログイン後にコピー
このアプローチは、ページをリロードすることなく、ビューポートの変更に動的に応答します。
4.一般的な使用例
a) 動的レイアウト調整
画面サイズに基づいて JavaScript 駆動のレイアウトを変更します。
1 2 3 4 5 6 7 8 9 10 11 12 13 | const mediaQuery = window.matchMedia( "(max-width: 768px)" );
function adjustLayout() {
if (mediaQuery.matches) {
document.body.style.backgroundColor = "lightblue" ;
} else {
document.body.style.backgroundColor = "white" ;
}
}
adjustLayout();
mediaQuery.addEventListener( "change" , adjustLayout);
|
ログイン後にコピー
b) 条件付きスクリプトの読み込み
特定の条件が満たされた場合にのみスクリプトをロードまたは実行します。
1 2 3 4 5 6 7 8 | const mediaQuery = window.matchMedia( "(max-width: 768px)" );
if (mediaQuery.matches) {
import( "./mobile.js" ).then(module => {
module.init();
});
}
|
ログイン後にコピー
c) アニメーションの調整
パフォーマンスを向上させるために、小型デバイスではアニメーションを無効にします。
1 2 3 4 5 | @media (max-width: 768px) {
body {
background-color: lightblue;
}
}
|
ログイン後にコピー
ログイン後にコピー
5. JavaScript とメディア クエリを組み合わせる利点
-
動的動作: ページをリロードせずに画面の変化に反応します。
-
パフォーマンスの最適化: 条件付きでリソースまたはスクリプトを読み込みます。
-
強化されたアクセシビリティ: モーションの削減など、ユーザーの好みに適応します。
-
UX の改善: さまざまなデバイスやビューポートに合わせてインタラクションを調整します。
6.ベストプラクティス
-
CSS と JavaScript を組み合わせる: スタイルには CSS を使用し、ロジックには JavaScript を使用します。
-
サイズ変更イベントのデバウンス: ウィンドウのサイズ変更に応答するとき、パフォーマンスの問題を回避するためにイベントをデバウンスします。
-
フォールバック: サポートされていないブラウザのデフォルト動作を常に含めます。
-
最新の構文を使用します: 非推奨の addListener よりも addEventListener を優先します。
7.ブラウザの互換性
最新のブラウザのほとんどは、Window.matchMedia() API を完全にサポートしています。ただし、古いブラウザでは MediaQueryList の addEventListener メソッドにポリフィルが必要な場合があります。
8.例: レスポンシブ ナビゲーション メニュー
これは、メディア クエリと JavaScript を組み合わせてレスポンシブ メニューを管理する実際の例です。
1 | const mediaQuery = window.matchMedia( "(max-width: 768px)" );
|
ログイン後にコピー
ログイン後にコピー
9.結論
JavaScript とメディア クエリを組み合わせることで、非常に動的で応答性の高いデザインを実現できます。このアプローチにより、ユーザーの好みやデバイスの特性にリアルタイムで適応できるようになり、パフォーマンスとユーザー エクスペリエンスの両方が向上します。これらのテクニックを習得することは、デバイスに優しい最新の Web アプリケーションを構築するために不可欠です。
こんにちは、アバイ・シン・カタヤットです!
**私はフロントエンドとバックエンドの両方のテクノロジーの専門知識を持つフルスタック開発者です。私はさまざまなプログラミング言語やフレームワークを使用して、効率的でスケーラブルでユーザーフレンドリーなアプリケーションを構築しています。
私のビジネス用メールアドレスまでお気軽にご連絡ください: **kaashshorts28@gmail.com.
以上がJavaScript とメディア クエリ: レスポンシブで動的な Web アプリケーションの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。