• HOME > 
  • Javascript > 
  • jQueryのレスポンシブ対応の方法【ウィンドウサイズごとに...

jQueryのレスポンシブ対応の方法【ウィンドウサイズごとに切り替える】

投稿日:

ウィンドウサイズごとに処理を切り替えるには?

WEBサイトはPCやタブレット・スマートフォンなどさまざまなデバイスで閲覧できる状況にあります。

CSSによるデザイン面もどのようなウィンドウサイズでも最適に見えるようなレスポンシブ化が必須とされていますが、jQueryによる処理においてもPCとスマホとでは見え方や操作性が大きく異なりますのでウィンドウサイズに応じた処理の切替が必要です。

CSSはメディアクエリを用いて、PCとスマホのようにウィンドウサイズごとに異なるデザインを作成します。

一方、jQueryの場合は条件分岐を作成して、ウィンドウサイズに応じて実行する処理の切り替えを行います。

条件分岐の作り方

「Aが○○の時はXXを行い、Aが△△の時は□□を行う」というような特定の条件を満たすか満たさないかで処理を分けることを条件分岐と呼びます。

条件分岐はif文を用いて下記のように記述して作成します。ウィンドウサイズ以外でも様々な条件を設定して処理を分岐させる時に利用します。

if文の書き方

レスポンシブ対応を行うには、このif文を用いてウィンドウサイズごとの条件分岐を作り処理を分けます。以下の2通りの方法でサイズ指定し条件を設定します。

  • matchMediaメソッドを使う方法
  • widthメソッドやheightメソッドで取得したサイズを使う方法

それぞれの使い方について説明していきます。

matchMediaメソッドを使う方法

matchMediaメソッドを使えば、CSSのメディアクエリと同じような感覚でウィンドウサイズごとに処理を分けることができます。

下記のように記述して使います。サイズの指定もメディアクエリと同様に「max-width」「max-height」「min-width」「min-height」を使います。

window.matchMediaの書き方

次の例では、ウィンドウサイズに応じてテキストが切り替わります。

HTML

<div id="nowW" class="test">現在のウィンドウ幅:<span></span>px</div>
<div id="nowH" class="test">現在のウィンドウ高さ:<span></span>px</div>
<div id="test1" class="test">matchMediaによる分岐:「<span></span>」</div>

jQuery

$(window).on("load resize",function(){
    var ww = $(window).width();
    var wh = $(window).height();
    $("#nowW span").text(ww);
    $("#nowh span").text(wh);
    if(window.matchMedia("(max-width:600px)").matches){
        $("#test1 span").text("スマホサイズです。");
    }else if(window.matchMedia("(max-width:900px)").matches){
        $("#test1 span").text("タブレットサイズです。");
    }else{
        $("#test1 span").text("PCサイズです。");
    }
});//end load resize

プレビュー

リサイズにも対応する

PCで閲覧している場合はユーザーがブラウザのウィンドウサイズを変更することがあります。

読み込んだ時にウィンドウサイズを取得されるため、サイズ変更が行われた場合には処理が実行されません。

先程の例では、あらかじめリサイズにも対応するようにしてあります。

リサイズイベントの書き方

width()やheight()で取得したサイズを使う方法

matchMediaメソッドと比べると少し手順が増えますが、width()メソッドやheight()メソッドでウィンドウのサイズを取得し、比較演算子を使って条件分岐を作成する方法です。

widthを使った書き方

HTML

<div id="nowW" class="test">現在のウィンドウ幅:<span></span>px</div>
<div id="nowH" class="test">現在のウィンドウ高さ:<span></span>px</div>
<div id="test1" class="test">width()による分岐:「<span></span>」</div>

jQuery

$(window).on("load resize",function(){
    var ww = $(window).width();
    var wh = $(window).height();
    $("#nowW span").text(ww);
    $("#nowh span").text(wh);

    if(ww < 600){
        $("#test2 span").text("スマホサイズです。");
    }else if(ww < 900){
        $("#test2 span").text("タブレットサイズです。");
    }else{
        $("#test2 span").text("PCサイズです。");
    }
});

プレビュー

まとめ

matchMediaメソッドを使えばjQueryのレスポンシブ対応はとても簡単です。CSSの分岐だけでは対応しきれないような画面サイズに応じた処理もjQueryによって対応することが可能です。分岐の条件の指定方法によって細かな切替も実現できます。

リンク先のサムネイル
CSSのメディアクエリの使い方

画面サイズに応じたスタイルの変更を実現するには、CSSに「メディアクエリ」と呼ばれる記述を使用します。メディアクエリを使って、画面サイズが●●px以上(または以下)の場合のスタイルをそれぞれ分けて指定することでレスポンシブデザインを作ることができます...【もっと読む】

関連する記事

サムネイル

jQueryのblurでフォーカスが外れた時の処理を行う方法……

2023年05月01日
最終更新日:2023年05月31日
jQueryのblur()メソッドはフォームの入力ボックスなどでフォーカスが外れたときに処理を実行させることができるメソッドです。
サムネイル

jQueryのinArray()で配列内を検索する方法【要素……

2023年05月01日
最終更新日:2023年05月31日
jQueryのinArrayメソッドは、配列の中に特定の要素が含まれているかどうかを検索することができるメソッドです。
サムネイル

JavascriptのindexOfで文字列を検索する方法【……

2023年05月01日
最終更新日:2023年05月31日
indexOfメソッドを使用すると、テキストや配列の中に指定の文字列が含まれているかどうかを検索することができます。条件分岐に利用することで、ある文字が含まれている時といない時とで処理を分けることが可能になります。
サムネイル

jQueryのclosest()で最も近い親要素を取得する方……

2023年05月01日
最終更新日:2023年04月17日
jQueryのclosest()は、要素から最も近い親要素を取得(指定)できるメソッドです。要素の親要素を辿っていき、該当するセレクターを持つものを見つけ出してくれます。
サムネイル

jQueryのprop()メソッドで属性値を取得・設定する方……

2023年04月04日
prop()は要素の属性値を取得したり、追加・変更することができるメソッドです。attrメソッドとの違いには「返り値が異なる」といった点があります。
サムネイル

jQueryでラジオボタンの値を取得や操作する方法【チェック……

2023年04月04日
jQueryを使えばHTMLのラジオボタンでユーザーが選択した(チェックされた)値を取得・操作することができます。propメソッドを使用して行います。
サムネイル

jQueryでaタグのhref(リンク先)を書き換える方法【……

2023年04月04日
最終更新日:2023年05月31日
aタグのhref(リンク先のURL)を書き換えたい場合は、attrメソッドを使用します。リンク先のURLの一部だけを書き換えたい時は、replaceメソッドで文字の置き換えを実行してからattrメソッドで書き換えるという方法になります。