2016-05-07 9 views

答えて

2

はい、それはfoo機能

時にメディアクエリの評価を行った結果、変更を実行します。

は、あなたの場合は

MDNから)これは、あなたが大きな幅をその500pxなどでウィンドウを起動します。次に、以下500pxなどにサイズを変更する場合は、関数が実行されることを意味します。後で幅を500pxより大きくするように後でサイズを変更すると、この関数は再び実行されます。

この関数は、最初の引数としてMediaQueryListEventで呼び出されます。ブール値matchesプロパティが含まれています。これは、メディアクエリが現在ビューポートと一致するかどうかを示します。

+1

'onresize'イベントとよく似ていませんか?私は 'window.onresize'をすでに持っていれば' addListener'が必要なのでしょうか? – user31782

+0

@ user31782より複雑なメディアクエリを使用することができます。たとえば、特定の方向またはアスペクト比を要求することができます。 MDNの[メディアクエリの使用](https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries)を参照してください。 –

+0

しかし、私たちは 'addListener'関数もなく、これらの複雑なメディアクエリをすべて使うことができます。必要なのは 'matchMedia'オブジェクトと' onresize'イベントハンドラです。 – user31782

1

trueからfalseまたはfalseからtrueのいずれかのメディアクエリー変化の評価リスナーfoo()が実行される。

matchMedia(...).addEventListener(foo)window.onResize(foo)重要な違いがある。前者、foo()意志で後でfoo()がブラウザウィンドウのサイズが変わるたびに繰り返し実行されます。特定のブレークポイントをターゲットにしている場合は、他のロジックを実行する前にこれらをテストしてfoo()にする必要があります。

matchMedia(...).addEventListener(foo)ロジックを書くことで、ブラウザのディメンションやメディアクエリで評価できるその他の情報をテストするためのロジック(または他の関数呼び出し)を追加しなくても、より集中したロジックを書き込むことができます(foo())。 foo()が実行頻度が低いという点でwindow.onResize(foo)よりもmatchMedia(...).addEventListener(foo)を使用すると、パフォーマンスが向上する可能性もあります。

免責事項:私は2つのアプローチの間で実際の性能比較を行っていません。私の前提は、実行されていないイベントハンドラは、それより速いという考えに基づいています。しかし、これは2つのアプローチの間のネイティブの違いを考慮に入れません。

関連する問題