PhotoSwipe で,左右のページ遷移を反転させたいと思っています.
そこで次のように,itemsを逆順にして実行したのですが,当然ながら表示されるindexカウンタの値も逆になってしまいます.
そちらを調整したいのですがphotoswipe.jsに手を加えない範囲でカスタマイズするにはどのような実装が考えられるでしょうか.
またはitemsの反転をせずに直接nextとprevと左右の順番を入れ替える方法があれば教えていただきたいです.
js
1const pswpView = e => { 2 let pswpElement = document.querySelector('div.pswp'); 3 let items = [...document.querySelectorAll('.iv-li img')].map(img => { 4 return {src: img.src, 5 w: img.naturalWidth, 6 h: img.naturalHeight 7 }; 8 }); 9 let index = parseInt(e.target.getAttribute('data-index')); 10 11 if (document.querySelector('.iv-rev').checked) { 12 items = items.reverse(); 13 index = items.length - 1 - index; 14 } 15 16 const options = {index: index}; 17 const pswp = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, options); 18 pswp.init(); 19}; 20 21[...document.querySelectorAll('.iv-li img')].forEach(img=>{ 22 img.addEventListener('click', pswpView, false); 23});
html
1<!DOCTYPE html> 2<html> 3 4<head> 5 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.2/photoswipe.min.css" type="text/css"> 6 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.2/default-skin/default-skin.min.css" 7 type="text/css"> 8 <script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.2/photoswipe.min.js"></script> 9 <script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.2/photoswipe-ui-default.min.js"></script> 10</head> 11 12<body> 13 <div class="pswp" aria-hidden="true" role="dialog" tabindex="-1"> 14 <div class="pswp__bg"></div> 15 <div class="pswp__scroll-wrap"> 16 <div class="pswp__container"> 17 <div class="pswp__item"></div> 18 <div class="pswp__item"></div> 19 <div class="pswp__item"></div> 20 </div> 21 <div class="pswp__ui pswp__ui--hidden"> 22 <div class="pswp__top-bar"> 23 <div class="pswp__counter"></div><button class="pswp__button pswp__button--close" title="Close (Esc)"></button> 24 <button class="pswp__button pswp__button--share" title="Share"></button> <button class="pswp__button pswp__button--fs" 25 title="Toggle fullscreen"></button> <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button> 26 <div class="pswp__preloader"> 27 <div class="pswp__preloader__icn"> 28 <div class="pswp__preloader__cut"> 29 <div class="pswp__preloader__donut"></div> 30 </div> 31 </div> 32 </div> 33 </div> 34 <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap"> 35 <div class="pswp__share-tooltip"></div> 36 </div><button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)"></button> <button 37 class="pswp__button pswp__button--arrow--right" title="Next (arrow right)"></button> 38 <div class="pswp__caption"> 39 <div class="pswp__caption__center"></div> 40 </div> 41 </div> 42 </div> 43 </div> 44 45 <input type="checkbox" class="iv-rev"> 46 <ul> 47 <li class="iv-li"> 48 <img src="img/0.png" data-index="0"> 49 </li> 50 <li class="iv-li"> 51 <img src="img/1.png" data-index="1"> 52 </li> 53 <li class="iv-li"> 54 <img src="img/2.png" data-index="2"> 55 </li> 56 <li class="iv-li"> 57 <img src="img/3.png" data-index="3"> 58 </li> 59 <li class="iv-li"> 60 <img src="img/4.png" data-index="4"> 61 </li> 62 </ul> 63</body> 64 65<script src="sample.js"></script> 66 67</html>
回答2件
あなたの回答
tips
プレビュー