コピペでできる!初心者でも簡単に作れる画像拡大モーダルの実装方法

記事内にプロモーションを含む場合があります。
コピペで簡単実装!画像拡大用モーダルの作り方

Webサイトを作るときに大切なのは、見た人に「使いやすい」と思ってもらえるデザインです。
特に商品ページやギャラリーなどでは、画像を大きく見られるだけでユーザーの満足度がぐっと上がります。

たとえば「クリックすると画像が拡大表示される」仕組み。
見た目はシンプルですが、ユーザーにとってはとても便利で、実際に多くのサイトで採用されています。

私自身も最初に学んだときは「こんな短いコードで実現できるんだ!」と驚きました。
そこでこの記事では、初心者でもコピペでそのまま使える「画像拡大モーダル」の作り方を、丁寧に解説していきます。

この記事で学べること
  • モーダルってそもそも何?
  • クリックで画像を拡大表示する方法(HTML・CSS・JavaScript)
  • コピペOK!すぐに試せるサンプルコード付き

まずは基本の仕組みを理解して、実際に自分のサイトに組み込んでみましょう。
「見やすい!」と感じてもらえるだけで、あなたのサイトの印象もワンランクアップしますよ。

ワンクリックで目的地へGO!

モーダルってそもそも何?

Webサイトを見ていて、画面の中央にポップアップのようなウィンドウが出てきて、背景が暗くなった経験はありませんか?
それが「モーダル」と呼ばれる仕組みです。

モーダルは、ユーザーの操作を一時的に中断して「これを見てほしい!」という情報を強調するために使われます。
特にECサイトやアプリでは定番のUIで、多くの場面で利用されています。

モーダルの特徴

画像拡大モーダルをクリックした時の見栄え
  • ユーザーの注意を引きやすい
    背景を暗くして前面に表示されるため、自然と視線がモーダルに集中します。
    重要なメッセージや操作を確実に伝えることができます。
  • シンプルなデザインが基本
    モーダルは必要な情報やボタンだけを配置するのが一般的。
    余計な要素がないため、ユーザーも迷わず操作できます。
  • 再利用しやすい
    一度作れば、ログイン画面や確認ダイアログ、画像拡大など、さまざまな場面で使い回せます。

モーダルが使われる主なシーン

モーダルは、以下のようなシーンでよく使用されます。

画像の拡大表示

アイコン:画像の拡大表示

今回紹介する機能

確認ダイアログ

アイコン:確認ダイアログ

「本当に削除しますか?」といった重要な確認

フォーム入力

アイコン:フォーム入力

ログインや問い合わせ画面

メッセージ通知

アイコン:メッセージ通知

「登録が完了しました!」などのアラート

特に 画像拡大モーダル はECサイトやポートフォリオで大活躍。
ユーザーが商品や作品の細部までチェックできるので、購買意欲やサイト滞在時間アップにつながることもあります。

モーダルの基本を理解したところで、次は 「実際に画像拡大モーダルを作る方法」 を見ていきましょう。

実際に作ってみよう!画像拡大モーダル

ここからは、実際に「画像をクリックすると拡大表示されるモーダル」を作っていきましょう。
まずは完成イメージをご覧ください。

完成イメージ(このページ内で確認できます)

以下のサンプルは、このページ内で動作します。
画像をクリックして、挙動を確認してみてください。

画像1 画像2 画像3
今回の完成イメージのポイント
  • クリックすると画像が拡大して背景が暗くなります
  • モーダルの外側や「×」を押すと閉じます
  • HTML/CSS/JavaScriptだけでシンプルに実装できます
ありぃ

後ほどコードを貼ります。まずは「どんな動きになるか」を体験してから実装に進むと、理解がスムーズです。

実際に動きを確認する(CodePen)

記事内のサンプルだけでなく、CodePenでも動作を確認できます。
その場でコードを書き換えて挙動を試したい方におすすめです👇

See the Pen モーダルで画像を拡大表示 by Ariii (@ariii-cdp) on CodePen.

HTML・CSS・JavaScriptでの実装してみよう

ここからは、実際に「画像をクリックすると拡大表示されるモーダル」を作っていきます。
HTML → CSS → JavaScript の順番でコードを書き、最後にまとめます。

1. HTMLの基本構造

まずは、サムネイル画像とモーダルの土台を作ります。

<!-- 画像のグリッド -->
<div class="image-grid">
  <img
    class="thumbnail"
    src="https://plus.unsplash.com/premium_photo-1680172800933-ae8462274162?q=80&w=300&h=300&auto=format&fit=crop"
    alt="画像1"
  />
  <img
    class="thumbnail"
    src="https://plus.unsplash.com/premium_photo-1722686461601-b2a018a4213b?q=80&w=300&h=300&auto=format&fit=crop"
    alt="画像2"
  />
  <img
    class="thumbnail"
    src="https://images.unsplash.com/photo-1495147466023-ac5c588e2e94?q=80&w=300&h=300&auto=format&fit=crop"
    alt="画像3"
  />
</div>

<!-- モーダル -->
<div id="myModal" class="modal">
  <span class="close">×</span> <!-- 閉じるボタン -->
  <img class="modal-content" id="js-modal-img" /> <!-- 拡大画像 -->
  <div id="caption"></div> <!-- 画像のキャプション -->
</div>
HTMLのポイント解説
  • .image-grid:サムネイルを並べる枠
  • .thumbnail:クリック対象のサムネイル画像
     src:表示したい画像のURLが入ります。
     alt:は画像の説明文(後でキャプションとして表示される)
  • #myModal:拡大画像を表示するモーダル全体を囲む要素
  • .close:「×」ボタン。
     中身の &times; はHTMLの文字参照で、実際の画面上では「×」として表示されます。
     モーダルやポップアップを閉じるための定番の記号です。
  • #js-modal-img:拡大表示される画像を差し込む領域。クリックしたサムネイルがここに反映されます。
  • #caption:画像の説明文(alt属性の内容)が表示されるエリア。

この段階で サムネイル → モーダル → 閉じるボタン → 拡大画像 → キャプション という構造ができました。
次は、CSSでデザインを整えていきます。

2. CSSでデザインを整える

次に、モーダルの見た目を整えていきましょう。
以下のCSSをコピペするだけで、サムネイルが横並びになり、モーダルもきれいに表示されます。

/* サムネイルを並べるエリア */
.image-grid {
  display: flex;              /* 横並びに配置 */
  justify-content: space-around;
  gap: 20px;                  /* 画像同士の間隔 */
}

/* サムネイル画像 */
.thumbnail {
  width: 100%;
  cursor: pointer;            /* クリックできるカーソルに */
  transition: transform 0.3s; /* ホバー時のアニメーション */
}
.thumbnail:hover {
  transform: scale(1.05);     /* ホバー時に少し拡大 */
}

/* モーダル全体 */
.modal {
  display: none;              /* 初期状態は非表示 */
  position: fixed;            /* スクロールしても固定 */
  z-index: 1;                 /* 最前面に表示 */
  left: 0; 
  top: 0;
  width: 100%; 
  height: 100%;
  background: rgba(0,0,0,0.7); /* 半透明の背景 */
}

/* 拡大画像 */
.modal-content {
  margin: 15% auto;
  display: block;
  width: 80%;
  max-width: 700px;           /* 最大サイズを制限 */
}

/* 閉じるボタン */
.close {
  position: absolute;
  top: 10px; 
  right: 25px;
  font-size: 35px;
  font-weight: bold;
  color: white;
  cursor: pointer;
}
CSSのポイント
  • .image-grid:フレックスボックスで画像を横並びに配置
  • .thumbnail:ホバーすると少し拡大して「クリックできそう」と感じさせる演出
  • .modal:画面全体を覆う黒い背景。半透明で奥のページを見せつつ、画像を強調
  • .modal-content:中央に拡大画像を表示。最大幅を指定して見やすく調整
  • .close:右上に配置された「×」ボタン。カーソルを合わせると閉じられることが直感的にわかる

このCSSを適用すると、サムネイルはきれいに並び、クリック後はモーダルで拡大画像が浮かび上がるデザインになります。

3. JavaScriptで動きをつける

モーダルの「開く/閉じる」を制御します。以下をそのまま script.js にコピペしてください。

 // モーダルの取得
var modal = document.getElementById("myModal");
var modalImg = document.getElementById("js-modal-img");
var captionText = document.getElementById("caption");

// サムネイル画像をクリックしたときの処理
var images = document.querySelectorAll(".thumbnail");
images.forEach(function(img) {
    img.onclick = function() {
        modal.style.display = "block";
        modalImg.src = this.src; // クリックした画像をモーダルに表示
        captionText.innerHTML = this.alt; // キャプションを設定
    }
});

// 閉じるボタンをクリックしたときにモーダルを閉じる
var span = document.getElementsByClassName("close")[0];
span.onclick = function() {
    modal.style.display = "none";
}

// モーダル外をクリックしたときにモーダルを閉じる
window.onclick = function(event) {
    if (event.target == modal) {
        modal.style.display = "none";
    }
}
まず全体像(ここでやっていること)
  • #myModal#js-modal-img#caption を取得
  • .thumbnail をクリック → モーダル表示+画像・キャプションを差し替え
  • .close(×)で閉じる
  • モーダルの外側(暗い背景)をクリックしても閉じる

コードの解説(役割ごとにサクッと)

必要な方は下のアコーディオンを開いてご覧ください。

1) モーダル関連の要素を取得
var modal = document.getElementById("myModal");
var modalImg = document.getElementById("js-modal-img");
var captionText = document.getElementById("caption");
  • modal:モーダル全体(背景含む)を表す要素。
  • modalImg:拡大して表示する画像の “入れ物”。クリックしたサムネイルの src をここにコピーします。
  • captionText:画像説明(キャプション)を表示する領域。alt の文字をここへ入れます。

※ 説明内の idjs-modal-img に統一(以前の記述で img01 となっていた場合は読み替えてください)。

2) サムネイルをクリック → モーダルを表示
var images = document.querySelectorAll(".thumbnail");
images.forEach(function(img) {
    img.onclick = function() {
        modal.style.display = "block";
        modalImg.src = this.src;            // クリックした画像のURLをコピー
        captionText.innerHTML = this.alt;   // altの文字をキャプションに表示
    }
});
  • querySelectorAll(".thumbnail"):サムネイル画像を全部まとめて取得。
  • forEach で1枚ずつ処理し、onclick に動作を登録。
  • this は「クリックされたその画像」を指します。
  • modal.style.display = "block" で画面にモーダルを表示。
  • modalImg.src = this.src で拡大表示する画像を差し替え。
  • captionText.innerHTML = this.alt でキャプションを差し替え(alt が空なら空のまま表示されます)。
3) 「×」ボタンで閉じる
var span = document.getElementsByClassName("close")[0];
span.onclick = function() {
    modal.style.display = "none";
}
  • getElementsByClassName("close") は複数返るので、最初の1つを [0] で取得。
  • display = "none" にして非表示にするだけのシンプル設計です。
4) モーダル外(暗い背景)をクリックで閉じる
window.onclick = function(event) {
    if (event.target == modal) {
        modal.style.display = "none";
    }
}
  • 画面どこかがクリックされたらイベントが発火。
  • event.target == modal(= 背景そのもの)を押したときだけ閉じます。
  • 画像そのものをクリックしても閉じないので、誤操作を防げます。

よくあるつまずき(チェックリスト)

  • id/クラス名の綴り:HTMLの idclass とJS側の指定が一致しているか(js-modal-img / myModal / thumbnail / close など)。
  • スクリプトの読み込み順:HTMLより先にJSを読み込むと要素が取得できないことがあります。</body>直前に <script> を置くか、テーマ側の「フッターに読み込み」を選択。
  • キャプションが表示されない:画像タグの alt が空だと何も出ません。必要に応じて説明文を入れておきましょう。
動作確認(3点だけ押さえればOK)
  • サムネイルをクリック → モーダルが開く
  • 拡大画像とキャプションが正しく表示される
  • 「×」または背景クリックで閉じる

まとめ

この記事では、HTML・CSS・JavaScriptだけで作る「画像クリック→拡大、×/背景クリックで閉じる」モーダルの実装手順を解説しました。

サムネイルをクリックすると拡大、直感操作で閉じられる
画像の alt をそのままキャプション に活用できる
シンプル構成で 商品ページ/ギャラリー/作品紹介 へ流用しやすい

次の一歩(3ステップ)
  1. 記事のコードをコピペ
  2. 画像の src / alt を自分用に差し替え
  3. PCとスマホ の両方で表示・操作をチェック

基本形を動かしてから、アニメーションやデザインを足して“自分仕様”に仕上げましょう。モーダルはHTML/CSS/JSだけで作れる定番UIなので、初心者にも扱いやすいです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
ワンクリックで目的地へGO!