PhotoSwipe.js需要获取图片宽高的处理方法
|
freeflydom
2024年12月18日 15:58
本文热度 1079
|
PhotoSwipe.js传入图片URL的同时,还需要配上图片的宽高,但这次的情况是无法预先知道宽高,所以先设置宽高100,然后查看或划动下一张图片的时候再更新当前图片宽高信息。
下面是做法:
<link rel="stylesheet prefetch" href="js/PhotoSwipe-master/dist/photoswipe.css">
<link rel="stylesheet prefetch" href="js/PhotoSwipe-master/dist/default-skin/default-skin.css">
<script src="js/jquery.min.js"></script>
<script src="js/PhotoSwipe-master/dist/photoswipe.js"></script>
<script src="js/PhotoSwipe-master/dist/photoswipe-ui-default.min.js"></script>
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
<div class="pswp__bg"></div>
<div class="pswp__scroll-wrap">
<div class="pswp__container">
<div class="pswp__item"></div>
<div class="pswp__item"></div>
<div class="pswp__item"></div>
</div>
<div class="pswp__ui pswp__ui--hidden">
<div class="pswp__top-bar">
<div class="pswp__counter"></div>
<button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
<button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
<div class="pswp__preloader">
<div class="pswp__preloader__icn">
<div class="pswp__preloader__cut">
<div class="pswp__preloader__donut"></div>
</div>
</div>
</div>
</div>
<div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
<div class="pswp__share-tooltip"></div>
</div>
<button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
</button>
<button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
</button>
<div class="pswp__caption">
<div class="pswp__caption__center"></div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
var pswpElement = document.querySelectorAll('.pswp')[0];
var pswp =null;
var data= {
startIndex:"",
data: [{src:'a.png',w:'200',h:'200',updfsize:0},{src:'b.png',w:'200',h:'200',updfsize:0}]
}
function img_obj(index){
var imageSrc = data.data[index].src;
var theImage = new Image();
theImage.src = imageSrc;
theImage.onload=function(){
data.data[index].src=imageSrc;
data.data[index].w=theImage.width;
data.data[index].h=theImage.height;
data.data[index].updfsize=1;
theImage=undefined;
pswp.updateSize(true);
}
}
function openPhotoViewer(file_url, ix) {
var items = data.data;
var options = {
index: ix,
shareButtons: false
};
pswp = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, options);
pswp.listen('afterChange', function() {
var currentIndex = pswp.getCurrentIndex();
var currentItem = pswp.getItemAt(currentIndex);
var currentWidth = currentItem.w;
var currentHeight = currentItem.h;
var currentSrc = currentItem.src;
var updfsize = currentItem.updfsize;
if(updfsize==0){
img_obj(currentIndex);
}
});
pswp.init();
}
openPhotoViewer('b.png',1)
</script>
该文章在 2024/12/18 15:58:23 编辑过