こんな方に読んでほしい
[記事の内容]

商品ページやメニュー詳細ページでは、複数の画像を見せたいケースが多くあります。
デモサイトはコチラから。
そこで、小さなサムネイルをクリックすると、大きなメイン画像が切り替わる仕組みを実装します。
完成イメージは以下のようになります。

下に並んだサムネイルをクリックすると、上のメイン画像がクリックした画像に切り替わります。
仕組みはとてもシンプルです。
クリックしたサムネイルの画像パス(src)を取得し、メイン画像のsrcに上書きするだけです。
処理の流れは以下のようになります。
attr('src')で、クリックされた画像のパスを取得します。srcに設定し、表示を切り替えます。それでは、HTML・CSS・JavaScriptの順にコードを見ていきましょう。
まずは、ベースとなるHTML構造を作成します。
メイン画像のエリアと、サムネイルのリストの2つを用意することがポイントです。
書き方は以下のようになります。
<div class="menu-single__main">
<img src="sample01.jpg" alt="" width="" height="">
</div>
<ul class="menu-single__thumbnail">
<li><img src="sample01.jpg" alt="" width="" height=""></li>
<li><img src="sample02.jpg" alt="" width="" height=""></li>
<li><img src="sample03.jpg" alt="" width="" height=""></li>
</ul>imgのsrcが書き換わります。liの数は、自由に増減できます。srcは、ご自身の画像の階層に合わせて変更します。widthとheightには、画像のサイズを入れておくとレイアウトのズレを防げます。※サムネイルの画像サイズは、メイン画像と同じ比率にそろえると、切り替え後の見た目が自然になります。
次に、CSSでメイン画像とサムネイルのデザインを調整します。
メイン画像は大きく表示し、サムネイルは3列のグリッドで横並びにしています。
書き方は以下のようになります。
.menu-single__main {margin-bottom: 3rem;}
.menu-single__main img {
width: 100%;
height: 37rem; /* お好みで調整してください */
object-fit: cover;
display: block;
}
ul.menu-single__thumbnail {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1.5rem;
}
ul.menu-single__thumbnail li {cursor: pointer;}
ul.menu-single__thumbnail img {
width: 100%;
height: 12rem;
object-fit: cover;
display: block;
}width: 100%、height: 37remで表示します。高さは、デザインに合わせて調整してください。grid-template-columns: repeat(3, 1fr)で、サムネイルを等幅の3列に配置します。gapで、画像同士の間隔を調整します。サムネイルの列数を変更したい場合は、repeat(3, 1fr)の数字を変更してください。
最後に、jQueryでサムネイルをクリックしたときの処理を記述します。
jQuery本体を読み込んだ後に記述してください。
書き方は以下のようになります。
// サムネイルの画像をクリックしたときの処理
$(function() {
$('.menu-single__thumbnail img').on('click', function() {
// クリックされたサムネイルの画像パス(src)を取得
var targetSrc = $(this).attr('src');
// メイン画像の src を、クリックされたサムネイルのパスに書き換える
$('.menu-single__main img').attr('src', targetSrc);
});
});$(this)は、クリックされた画像そのものを指します。attr('src')で画像パスを取得し、変数targetSrcに入れます。※動かない場合は、jQuery本体が先に読み込まれているか、HTMLとJavaScriptのクラス名が一致しているかを確認してください。
上記のままだと、画像は切り替わってもaltは最初のままです。
アクセシビリティやSEOを意識する場合は、altも一緒に書き換えるのがおすすめです。
書き方は以下のようになります。
$(function() {
$('.menu-single__thumbnail img').on('click', function() {
var targetSrc = $(this).attr('src');
var targetAlt = $(this).attr('alt');
$('.menu-single__main img')
.attr('src', targetSrc)
.attr('alt', targetAlt);
});
});attr()をつなげて記述すると、srcとaltを一度に更新できます。※この場合は、サムネイル側のaltにも、画像の内容が分かる文章を入れておきましょう。また、サムネイルとメイン画像で同じファイルを使うため、小さい画像を用意している場合は、切り替え後の表示がぼやけることがあります。
今回はこれで以上です。
今回は、jQueryでサムネイル画像をクリックして、メイン画像を切り替える方法を解説しました。
クリックしたサムネイルのsrcを取得し、メイン画像のsrcに書き換えるだけで実装できます。
ぜひ、商品ページやメニューページで活用してみてください。
srcを取得し、メイン画像のsrcに書き換えることで切り替えを実現します。attr()は、引数が1つなら取得、2つなら書き換えになります。object-fit: coverで、画像サイズがバラバラでも見た目をそろえられます。altも一緒に書き換えると、アクセシビリティの面でも安心です。2026.11.10
2026.11.05
2026.11.03
2026.10.30
2026.10.27
2026.10.21
2026.10.10
2026.08.14
2026.08.12
2026.04.05

© 2026 shu-naka-blog