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

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

投稿日:

このページにはGoogleアドセンス広告とアフィリエイト広告が含まれています。

カテゴリー記事のアイキャッチ画像
広告
広告

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

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以上(または以下)の場合のスタイルをそれぞれ分けて指定することでレスポンシブデザインを作ることができます...【もっと読む】

広告
広告

関連する記事

サムネイル

JSのclassList.toggleでクラスの付け外しを行……

2024年09月04日
classList.toggleとは? まず「classList」とは要素のクラス属性の情報を参照するプロパティで、「classList.add()」や「cla […]
サムネイル

JSで要素が特定のクラスを持つか調べる【classList.……

2024年09月04日
JSで要素が特定のクラスを持つか調べるには? JavaScriptで要素が特定のクラスを持つか調べるには「classList.contains」を使います。 「 […]
サムネイル

JSで文字列の中の任意の位置に別の文字を挿入する【slice……

2024年09月04日
JavaScriptに文字列の中の任意の位置に別の文字を挿入するにはslice()メソッドを利用します。sliceは特定の文字列の任意の位置から任意の文字数分を切り出すメソッドで、これを使って対象の文字列を一旦分解し、挿入したい文字と一緒新しい文字列としてくっつけ直します。
サムネイル

【数値のゼロ埋め】JSのpadStart(padEnd)メソ……

2024年09月04日
JavaScriptのpadStartは対象の文字列が任意の桁数になるまで、その先頭から指定した文字で文字埋めを実行するメソッドです。第一引数に最終的な桁数、第二引数に埋める文字を指定します。
サムネイル

JSのsetIntervalで一定時間ごとに繰り返し処理を実……

2024年08月01日
JSのsetIntervalとは? 業務においてJavaScriptを使って一定時間おきに繰り返し処理を実行させたい場面があり、これまで大まかにしか理解していな […]
サムネイル

JSのsetTimeoutで指定した時間後に処理を実行させる……

2024年08月01日
setTimeout()は、指定した時間が経過したら処理を一度だけ実行するといったタイマーのような設定ができる関数です。一定間隔で処理を繰り返すsetIntervalと異なり、処理が一回しか実行されない点が特徴です。停止させる場合はclearTimeoutを使います。
サムネイル

JSでセレクト値が変更されたらフォームを送信を実行する方法【……

2024年07月02日
ユーザーがセレクトボックスの値を変更したタイミングでフォームの送信を実行するという処理を実装する機会があったので、その方法を備忘録として残しておきます。