【PhotoSwipeとは】
スマホサイトで写真ギャラリーを設置したいときに使えるライブラリスワイプで画像がめくれて便利!
レスポンシブサイトの画像ギャラリーにオススメ。
(optionに、imageScaleMethod: "fitNoUpscale" とすれば画像が最大100%で表示されるのでPCサイトでも使えます。)
https://github.com/codecomputerlove/PhotoSwipe
【実現したいこと】
通常は画像サムネイルのクリック(or タップ)でPhotoswipeギャラリーを起動します。それとは別に、新着情報などのテキストリンクから特定の画像のPhotoSwipeギャラリーを起動したい。
【方針】
var instance = $("#Gallery a").photoSwipe(options); instance.show(0);で、最初のPhotoSwipeギャラリーを起動できることから、テキストリンクに任意の要素(data-swipeとする)と、クラス(.swipe-targetとする)を設置し、.swipe-targetの上から順番にdata-swipeに番号を振ってゆき、.swipe-targetがクリックされたら、data-swipeから番号xを取得し、instance.show(x)で目的のPhotoSwipeギャラリーを起動する。
【HTML】
ヘッダー(もしくはフッター)部分(jQueryバージョンを使用)
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script>window.jQuery || document.write('<script src="/js/vendor/jquery-1.8.2.min.js"><\/script>')</script> <script src="/js/vendor/klass.min.js"></script> <script src="/js/vendor/code.photoswipe.jquery-3.0.5.min.js"></script>・・・
画像のサムネイル部分
<ul id="Gallery"> <li><a href="A.png"><img src="A_thumb.png" alt=""></a></li> <li><a href="B.png"><img src="B_thumb.png" alt=""></a></li> <li><a href="C.png"><img src="C_thumb.png" alt=""></a></li> </ul>(サムネイルをクリックすると普通にPhotoSwipeギャラリーが起動します。)
新着情報テキスト部分
<ul id="GalleryTxt"> <li><a href="#" class="swipe-target" data-swipe="">Aをアップしました。</a></li> <li><a href="#" class="swipe-target" data-swipe="">Bをアップしました。</a></li> <li><a href="#" class="swipe-target" data-swipe="">Cをアップしました。</a></li> </ul>(このテキストリンクをクリックして対象の画像をPhotoSwipeギャラリーで起動したい。)
【JavaScript】(jQuery)
(function (window, $, PhotoSwipe) { $(document).ready(function () { // 通常の設定部分 var options = {}; var instance = $("#Gallery a").photoSwipe(options); // data-swipeに番号をふる var swipe_cnt = 0; $("#GalleryTxt .swipe-target").each(function(){ $(this).attr("data-swipe", swipe_cnt); swipe_cnt++; }); // .swipe-targetがクリックされたら当該番号のPhotoSwipeギャラリーを起動する $(".swipe-target").click(function () { var showNo = $(this).attr("data-swipe"); instance.show(parseInt(showNo)); return false; }); }); }(window, window.jQuery, window.Code.PhotoSwipe));
以上です。
コメント
コメントを投稿