SHU BLOG

News

BLOG NEWS

TITLE

【jQuery】レスポンシブデザインでPC画像とスマホ画像を切り替える方法

SHU[シュウ]

1991年生まれ九州の宮崎県育ち
高校卒業後、愛知県で自動車関係の
お仕事に5年間勤め、WEB業界に
転職致しました。
趣味:サッカー観戦、ゲーム、映画、漫画
基本インドアです!

サーバーとドメインの同時取得で.jpが無料

シュウ
シュウ
公開日: 2020.01.15 / 更新日: 2026.10.15
今回は【jQuery】レスポンシブデザインで画像を切り替える方法の解説になります!PC用とスマホ用の画像を出し分ける方法を、CSS・jQuery・pictureタグの3パターンで紹介します。

こんな方に読んでほしい

  • CSS・jQueryを学び始めた方
    メディアクエリや、jQueryでの画像切り替えの基本を学びたい方です。
  • PCとスマホで別々の画像を表示したい方
    横長のバナー画像を、スマホでは見やすい縦長の画像に差し替えたい方です。
  • 実装方法の違いを比較して選びたい方
    CSS・jQuery・pictureタグそれぞれのメリットとデメリットを整理して、自分のサイトに合う方法を見つけたい方です。

レスポンシブデザインで画像を切り替える必要性とは

以前は、PCを基準にデザインを考えるのが一般的でした。現在は、スマートフォンを基準にデザインを考える「モバイルファースト」の時代になっています。

アクセス端末の割合

当ブログでは、スマートフォンが73.6%、PCが26.4%と、約7割の方がスマートフォンで閲覧してくれています。ありがとうございます!

PC向けの横長画像をそのままスマホで表示すると、文字が小さくて読めなくなることがあります。そこで、端末ごとに画像を出し分ける方法が必要になります。

今回は、次の3つの方法を紹介します。

CSSを使ってPC画像とスマートフォン画像を切り替える方法

CSSで画像を切り替えるイメージ

準備するものはPC画像とスマートフォン画像

  • PC画像pc_img.jpg
  • SP画像sp_img.jpg

HTML記述方法

PC用とスマートフォン用の画像を、それぞれ別のクラス名を付けて並べて記述します。

<img src="../pc_img.jpg" alt="PC画像" class="pc_img">
<img src="../sp_img.jpg" alt="スマートフォン画像" class="sp_img">
●①PC用の画像
class="pc_img"を付けた画像です。PC表示のときだけ見せる画像になります。
●②スマートフォン用の画像
class="sp_img"を付けた画像です。スマホ表示のときだけ見せる画像になります。
●③alt属性
画像の内容を説明するaltは、SEOやアクセシビリティの面でも大切です。両方の画像にしっかり記述しましょう。
注目ポイント
クラス名に注目!

PCはpc_img、スマートフォンはsp_imgというクラス名を付けています。このクラス名を使って、次のCSSで表示と非表示を切り替えます。

CSS記述方法

ベースのスタイルでPC画像を表示し、メディアクエリでスマホ幅になったら表示を入れ替えます。

/* PCではPC画像を表示する */
.pc_img {
  display: block;
}
/* PCではスマートフォン画像を非表示にする */
.sp_img {
  display: none;
}

@media screen and (max-width: 767px) {
  /* スマートフォンではPC画像を非表示にする */
  .pc_img {
    display: none;
  }
  /* スマートフォンではスマートフォン画像を表示する */
  .sp_img {
    display: block;
  }
}
●①PC表示の初期設定
.pc_imgをdisplay: block;、.sp_imgをdisplay: none;にして、PCではPC画像だけが見える状態にします。
●②メディアクエリ
@media screen and (max-width: 767px)は「画面幅が767px以下のとき」に適用される指定です。スマホやタブレット縦向きの幅が対象になります。
●③表示の入れ替え
メディアクエリの中で、PC画像をdisplay: none;、スマホ画像をdisplay: block;に切り替えています。

デモサイトはこちら

メリット
  • 記述が簡単で、JavaScriptやjQueryを読み込む必要がありません。
デメリット
  • 毎回、HTMLにPC用とスマートフォン用の2つを記述しなければなりません。
  • クラス名の付け忘れに注意が必要です。
  • display: none;で非表示にしても、ブラウザによっては両方の画像を読み込むため、表示速度の面で不利になることがあります。

jQueryを使ってPC画像とスマートフォン画像を切り替える方法

準備するものはPC画像とスマートフォン画像

jQueryの場合は、画像のファイル名の末尾に_pcと_spを付けて区別します。

  • PC画像pc_img_pc.jpg
  • SP画像sp_img_sp.jpg

HTML記述方法

HTMLには画像を1つだけ記述し、切り替え対象のクラス名switchを付けます。

<img src="../pc_img_pc.jpg" alt="PC画像" class="switch">
●①画像パスの「_pc」
ファイル名の末尾に_pcを付けます。jQueryがこの部分を_spに書き換えて、画像を切り替えます。
●②クラス名「switch」
切り替えたい画像にswitchを付けます。jQueryはこのクラスを目印に対象を探します。
注目ポイント
画像名の「_pc」「_sp」とクラス名の「switch」に注目!

CSSを使う場合と違い、HTMLに記述する画像は1つだけです。スマートフォン用の画像はHTMLに書かず、jQueryが自動で差し替えます。

jQuery記述方法

ウィンドウ幅を取得し、768px以上なら_spを_pcに、768px未満なら_pcを_spに置換します。なお、jQuery本体の読み込みも忘れずに行ってください。

$(function() {
  // 切り替える対象のclass属性
  var $elem = $('.switch');
  // 切り替え対象のsrc属性の末尾の文字列
  var sp = '_sp.';
  var pc = '_pc.';
  // 画像を切り替えるウィンドウサイズ
  var replaceWidth = 768;

  function imageSwitch() {
    // ウィンドウサイズを取得する
    var windowWidth = parseInt($(window).width());

    // ページ内のすべての.switchに適用する
    $elem.each(function() {
      var $this = $(this);
      // 768px以上なら_spを_pcに置換する
      if (windowWidth >= replaceWidth) {
        $this.attr('src', $this.attr('src').replace(sp, pc));
      // 768px未満なら_pcを_spに置換する
      } else {
        $this.attr('src', $this.attr('src').replace(pc, sp));
      }
    });
  }
  imageSwitch();

  // リサイズ操作の0.2秒後に処理を実行する
  var resizeTimer;
  $(window).on('resize', function() {
    clearTimeout(resizeTimer);
    resizeTimer = setTimeout(function() {
      imageSwitch();
    }, 200);
  });
});
●①変数の設定
$elemに切り替え対象(.switch)、spとpcに置換する文字列、replaceWidthに切り替える幅を入れています。
●②ウィンドウ幅の取得
$(window).width()で現在のウィンドウ幅を取得します。
●③画像のsrc属性を置換
each()で対象の画像を順に処理し、replace()で_pcと_spを入れ替えて画像を切り替えます。
●④初回実行とリサイズ対応
ページ読み込み時にimageSwitch()を実行します。リサイズ時はsetTimeoutで0.2秒待ってから実行し、処理の連続実行を防いでいます。

デモサイトはこちら

メリット
  • HTMLにPC用とスマートフォン用を両方記述しなくてよいため、HTMLがすっきりします。
デメリット
  • jQueryの記述が長いため、コピペで使うのが現実的です。
  • 他のjQueryプラグインと併用すると干渉する恐れがあります。
  • HTMLの初期状態(PC画像)が先に読み込まれてから差し替わるため、スマホでは一瞬PC画像が読み込まれることがあります。
  • jQueryライブラリの読み込みが必要になり、ページが少し重くなります。

【現在の推奨】pictureタグを使ってPC画像とスマートフォン画像を切り替える方法

現在は、HTML標準の<picture>タグで画像を出し分ける方法が主流です。CSSもjQueryも不要で、ブラウザが画面幅に合った画像だけを読み込みます。主要なブラウザは対応済みなので、新しく実装するならこの方法をおすすめします。

HTML記述方法

<picture>
  <source media="(min-width: 768px)" srcset="../pc_img.jpg">
  <img src="../sp_img.jpg" alt="商品イメージ" width="600" height="400">
</picture>
●①pictureタグ
<picture>は、複数の画像候補をまとめて囲むタグです。
●②sourceタグ
media="(min-width: 768px)"の条件に合う場合(画面幅768px以上)は、srcsetのPC画像を表示します。
●③imgタグ
<source>の条件に合わない場合は、<img>のスマホ画像を表示します。altやwidth・heightは<img>に記述します。
メリット
  • CSSもjQueryも不要で、HTMLだけで完結します。
  • 表示する画像だけを読み込むため、表示速度の面でも有利です。
デメリット
  • 画像1つごとに<picture>と<source>を記述する必要があります。
  • CSSのbackground-imageで指定した背景画像には使えません(背景画像はメディアクエリで切り替えます)。

まとめ

今回は、PC画像とスマートフォン画像を切り替える方法を、CSS・jQuery・pictureタグの3パターンで紹介しました。手軽に実装したいならCSS、HTMLをすっきりさせたいならjQuery、表示速度と保守性を重視するならpictureタグが向いています。サイトの環境に合わせて選んでください。

POINT
  • CSS方式は、pc_imgとsp_imgのクラス名の付け忘れに注意します。
  • CSS方式はdisplay: none;でも画像を読み込む場合があるため、表示速度に注意します。
  • jQuery方式は、ファイル名の_pc・_spとクラス名switchを正しく記述します。
  • ブレイクポイント(768px)は、CSSとjQueryで必ず同じ値に統一します。
  • 現在は<picture>タグが推奨です。新規実装ではまず検討します。
  • PC画像とスマートフォン画像を間違った組み合わせでアップロードしないようにします。

テンプレートを見る

Web・デザインの本棚

Web・デザインの本棚を見る

スポンサーリンク

SHU

1991年生まれ九州の宮崎県育ち高校卒業後、愛知県で自動車関係のお仕事に5年間勤め、WEB業界に転職致しました。
趣味:サッカー観戦、ゲーム、映画、漫画基本インドアです!笑
つくる、しあわせをテーマとして主にWEBに関する様々な情報を発信しています。

オススメ記事

カテゴリー

月別アーカイブ

Others Posts記事

NEW
本の紹介