🐈
matchMediaサンプル
resizeイベントをmatchMediaに置き換えた場合のサンプルとして残しておきます。
resizeイベントはwindow幅を変えている間は常にイベント発動しているが、matchMediaは設定したブレイクポイントを通解する場合のみ発動する。
そのためパフォーマンス向上が見込まれるのではないかと思い、書いてみました。
resizeイベントの場合
const md = 768;
//ウィンドウ幅変更時の挙動
window.addEventListener('resize', () => {
let window_width = window.innerWidth;
if (window_width >= md) { //PCにした時
drawer.style.display = "";
drawerReset();
} else { //SP
}
matchMediaを使った場合
- const md = 768;
- const mqMD = window.matchMedia(`(min-width: ${md}px)`);
- mqMD.addEventListener("change", mediaQuery);
- mediaQuery(mqMD);
- function mediaQuery(e) {
- if(e.matches) {
- addEventResize();
- } else {
- }
- }
function addEventResize() {
drawer.style.display = "";
drawerReset();
}
+ matchMedia("", addEventResize);
Discussion