今回はColorboxというjQueryプラグインを使用することで、aタグを使用せずに、画像が拡大されたモーダルを表示する方法についてご紹介します。

Colorboxのメリットはaタグが不要であること

lightboxなど画像拡大するためのプラグインは他にもたくさんありますが、基本的にaタグが必要になります。

aタグが必要ということは、例えばCMSで記事を作成する際、モーダル表示したい画像のimgタグを都度aタグで囲む必要が出てきます。
画像の変更などメンテナンスが必要になった際にimgタグとaタグの両方を修正する必要が出てくるため、少々面倒な作業になります。

しかしColorboxプラグインであれば、aタグを使用せずとも、画像拡大のモーダル表示をすることができます。

Colorboxの使い方

以下の画像をクリックしてみて下さい。

img_20241129.jpg

このようなモーダル表示の実装を行えるように、
Colorboxの使い方についてご説明します。

まず、下記URLからダウンロードを行います。
https://www.jacklmoore.com/colorbox/

ダウンロードしzipファイルを解凍したら、直下のjquery.colorbox-min.jsと、いずれかのsampleフォルダからcolorbox.cssを該当のフォルダに移動し、headタグで読み込みを行います。

・cssの読み込み

<link rel="stylesheet" href="https://www.sample.com/colorbox/colorbox.css" media="all">

・jQueryの読み込み

<script src="https://www.sample.com/colorbox/jquery.colorbox-min.js"></script>

HTML

<img class="colorbox-img" alt="画像" src="https://www.sample.com/sample.png" width="1000" height="600">

imgタグに特定のクラスを付与します。

CSS

.colorbox-link {
   cursor: zoom-in;
}
#cboxLoadedContent img {
   width: 100%;
}

CSSは必要に応じて追記します。
(記述場所はcolorbox.cssで良いかと思います。)

上記サンプルコードでは、画像をホバーした時にズームインのカーソルに切り替わり、
モーダル表示された画像を横幅いっぱいに表示するためのCSSを記述しています。

jQuery

$(document).ready(function() {
 $(".colorbox-img").on('click' ,function() {
     $.colorbox({
       href:this.src,
       open:true,
       maxWidth:"90%",
       maxHeight:"90%"
     });
     return false;
 });
});

Colorboxはモーダル表示させる画像のリンク先を指定することができるので、それを利用します。

画像をクリックしたときにimgタグのsrcを取得し、その値をクリック時のリンク先(href)に指定することで、aタグでimgタグを囲まなくても、画像をモーダル表示することができます。

img_20241129.jpg

Colorboxのオプションについては下記サイトより確認することができます。

参考)
https://www.jacklmoore.com/colorbox/

まとめ

以上のように、Colorboxを使えばaタグなしで画像のモーダル表示を行うことができます。
ぜひ実装してみてください。

(tamura)