メディア クエリは、画面の幅、高さ、解像度などのユーザーのデバイスの特性に基づいてスタイルを適用するために使用される強力な CSS 機能です。 JavaScript は、これらの状況の変化に対する動的な応答を可能にし、さまざまなデバイス間でのアプリケーションの動作をより詳細に制御できるようにすることで、メディア クエリのユーティリティを強化します。
開発者はメディア クエリを使用して、ユーザーのデバイスまたはビューポートのプロパティに基づいて条件付きで適用される CSS ルールを定義できます。
CSS の基本構文:
@media (max-width: 768px) { body { background-color: lightblue; } }
JavaScript では、Window.matchMedia() メソッドを使用してこれらのメディア クエリを動的に操作できます。
Window.matchMedia() メソッドを使用すると、メディア クエリをプログラムでテストし、変更にリアルタイムで応答できます。
構文:
const mediaQuery = window.matchMedia("(max-width: 768px)");
if (mediaQuery.matches) { console.log("Viewport is 768px or smaller."); } else { console.log("Viewport is larger than 768px."); }
addEventListener メソッドを使用して、メディア クエリ状態の変更をリッスンできます。
例:
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."); } } // Attach listener mediaQuery.addEventListener("change", handleMediaQueryChange);
このアプローチは、ページをリロードすることなく、ビューポートの変更に動的に応答します。
画面サイズに基づいて JavaScript 駆動のレイアウトを変更します。
const mediaQuery = window.matchMedia("(max-width: 768px)"); function adjustLayout() { if (mediaQuery.matches) { document.body.style.backgroundColor = "lightblue"; } else { document.body.style.backgroundColor = "white"; } } // Initial check and listener adjustLayout(); mediaQuery.addEventListener("change", adjustLayout);
特定の条件が満たされた場合にのみスクリプトをロードまたは実行します。
const mediaQuery = window.matchMedia("(max-width: 768px)"); if (mediaQuery.matches) { // Load mobile-specific script import("./mobile.js").then(module => { module.init(); }); }
パフォーマンスを向上させるために、小型デバイスではアニメーションを無効にします。
@media (max-width: 768px) { body { background-color: lightblue; } }
最新のブラウザのほとんどは、Window.matchMedia() API を完全にサポートしています。ただし、古いブラウザでは MediaQueryList の addEventListener メソッドにポリフィルが必要な場合があります。
これは、メディア クエリと JavaScript を組み合わせてレスポンシブ メニューを管理する実際の例です。
const mediaQuery = window.matchMedia("(max-width: 768px)");
JavaScript とメディア クエリを組み合わせることで、非常に動的で応答性の高いデザインを実現できます。このアプローチにより、ユーザーの好みやデバイスの特性にリアルタイムで適応できるようになり、パフォーマンスとユーザー エクスペリエンスの両方が向上します。これらのテクニックを習得することは、デバイスに優しい最新の Web アプリケーションを構築するために不可欠です。
こんにちは、アバイ・シン・カタヤットです!
**私はフロントエンドとバックエンドの両方のテクノロジーの専門知識を持つフルスタック開発者です。私はさまざまなプログラミング言語やフレームワークを使用して、効率的でスケーラブルでユーザーフレンドリーなアプリケーションを構築しています。
私のビジネス用メールアドレスまでお気軽にご連絡ください: **kaashshorts28@gmail.com.
以上がJavaScript とメディア クエリ: レスポンシブで動的な Web アプリケーションの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。