0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

window.mediaMatchで3デバイス判定

Last updated at Posted at 2019-09-14
  • mediaMatchで3デバイス判定と切替時のイベントをまとめる
  • メディアクエリはサイトによって書き換え

サンプルコード


// メディアチェック
let medias = {
    winobj:[],
    query:[
        'screen and (max-width: 559px)', //SP
        'screen and (max-width: 959px) and (min-width: 560px)', //TABLET
        'screen and (min-width: 960px)', //PC
    ],
    removeSpace: function(s) {
        // スペースを除去するやつ
        return s.replace(/\s/g,'');
    }
};

// 切り替えイベント
function checkBreak(query){
    if(medias.removeSpace(query.media) === medias.removeSpace(medias.query[0]) && query.matches === true){
        // spの処理
        console.log( 'sp' );
    }
    if(medias.removeSpace(query.media) === medias.removeSpace(medias.query[1]) && query.matches === true){
        // tabの処理
        console.log( 'tab' );
    }
    if(medias.removeSpace(query.media) === medias.removeSpace(medias.query[2]) && query.matches === true){
        // pcの処理
        console.log( 'pc' );
    }
}

// ロード時実行
document.addEventListener('DOMContentLoaded',function(){
    for(let i=0;i<medias.query.length;i++){
        medias.winobj[i] = window.matchMedia(medias.query[i]);
        medias.winobj[i].addListener(checkBreak);
    }    
});

ちょっと課題点

スペースを含む以下のif部分。
もっと簡易なmatchを生成してよりメディアクエリ部分に特化したifのがブラウザの変更とかにはつよそーだなーと思ったり。

medias.removeSpace(query.media) === medias.removeSpace(medias.query[0]) && ~

ブラウザ確認

Chrome 76.0
Firefox 69.0
Safari 12.1

偉大なる参考

window.matchMedia をそろそろ活用してもいい頃
【続々】window.matchMedia を用いたブレイクポイントイベント
Matching multiple CSS media queries using window.matchMedia()

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?