-
<!DOCTYPE html>
-
<html lang="en" >
-
-
<head>
-
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, viewport-fit=cover">
-
<meta charset="UTF-8">
-
-
-
-
<title>CodePen - Multiple PhotoSwipe galleries on pagea</title>
-
-
-
<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe.min.css'>
-
<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/default-skin/default-skin.min.css'>
-
-
<style>
-
.my-gallery {
-
width: 100%;
-
float: left;
-
}
-
.my-gallery img {
-
width: 100%;
-
height: auto;
-
}
-
.my-gallery figure {
-
display: block;
-
float: left;
-
margin: 0 5px 5px 0;
-
width: 150px;
-
}
-
.my-gallery figcaption {
-
display: none;
-
}
-
</style>
-
-
<script>
-
windowwindow.console = window.console || function(t) {};
-
</script>
-
-
-
-
<script>
-
if (document.location.search.match(/type=embed/gi)) {
-
window.parent.postMessage("resize", "*");
-
}
-
</script>
-
-
-
</head>
-
-
<body translate="no" >
-
-
-
-
-
-
<h2>4Second gallery:</h2>
-
-
<div class="my-gallery" itemscope itemtype="http://schema.org/ImageGallery">
-
-
-
-
<figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject">
-
<a href="https://www..tw/WebUpload/UpLoadFile/2021161173814.jpg" itemprop="contentUrl" data-size="">
-
<img src="https://www..tw/WebUpload/UpLoadFile/2021161173814.jpg" itemprop="thumbnail" alt="Image description" />
-
</a>
-
<figcaption itemprop="caption description">ddd2.1</figcaption>
-
</figure>
-
-
<figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject">
-
<a href="https://www..tw/WebUpload/UpLoadFile/2021162887102.jpg" itemprop="contentUrl" data-size="">
-
<img src="https://www..tw/WebUpload/UpLoadFile/2021162887102.jpg" itemprop="thumbnail" alt="Image description" />
-
</a>
-
<figcaption itemprop="caption description">ee 2.2</figcaption>
-
</figure>
-
-
-
</div>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
-
-
<!-- Background of PhotoSwipe.
-
It's a separate element, as animating opacity is faster than rgba(). -->
-
<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--share" title="Share"></button>
-
-
<button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></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 src="https://cpwebassets.codepen.io/assets/common/stopExecutionOnTimeout-157cd5b220a5c80d4ff8e0e70ac069bffd87a61252088146915e8726e5d9f147.js"></script>
-
-
<script src='https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe.min.js'></script>
-
<script src='https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe-ui-default.min.js'></script>
-
-
<script src="https://cdn.staticfile.org/jquery/3.3.1/jquery.min.js"></script>
-
-
<script id="rendered-js" >
-
var initPhotoSwipeFromDOM = function (gallerySelector) {
-
-
// parse slide data (url, title, size ...) from DOM elements
-
// (children of gallerySelector)
-
var parseThumbnailElements = function (el) {
-
var thumbElements = el.childNodes,
-
numNodes = thumbElements.length,
-
items = [],
-
figureEl,
-
linkEl,
-
size,
-
item;
-
-
for (var i = 0; i < numNodes; i++) {if (window.CP.shouldStopExecution(0)) break;
-
-
figureEl = thumbElements[i]; // <figure> element
-
-
// include only element nodes
-
if (figureEl.nodeType !== 1) {
-
continue;
-
}
-
-
linkEl = figureEl.children[0]; // <a> element
-
-
-
size = linkEl.getAttribute('data-size').split('x');
-
-
// create slide object
-
item = {
-
src: linkEl.getAttribute('href'),
-
w: parseInt(size[0], 10),
-
h: parseInt(size[1], 10) };
-
-
-
-
-
if (figureEl.children.length > 1) {
-
// <figcaption> content
-
item.title = figureEl.children[1].innerHTML;
-
}
-
-
if (linkEl.children.length > 0) {
-
// <img> thumbnail element, retrieving thumbnail url
-
item.msrc = linkEl.children[0].getAttribute('src');
-
}
-
-
item.el = figureEl; // save link to element for getThumbBoundsFn
-
items.push(item);
-
}window.CP.exitedLoop(0);
-
-
return items;
-
};
-
-
// find nearest parent element
-
var closest = function closest(el, fn) {
-
return el && (fn(el) ? el : closest(el.parentNode, fn));
-
};
-
-
// triggers when user clicks on thumbnail
-
var onThumbnailsClick = function (e) {
-
ee = e || window.event;
-
e.preventDefault ? e.preventDefault() : e.returnValue = false;
-
-
var eeTarget = e.target || e.srcElement;
-
-
// find root element of slide
-
var clickedListItem = closest(eTarget, function (el) {
-
return el.tagName && el.tagName.toUpperCase() === 'FIGURE';
-
});
-
-
if (!clickedListItem) {
-
return;
-
}
-
-
// find index of clicked item by looping through all child nodes
-
// alternatively, you may define index via data- attribute
-
var clickedGallery = clickedListItem.parentNode,
-
childNodes = clickedListItem.parentNode.childNodes,
-
numChildNodes = childNodes.length,
-
nodeIndex = 0,
-
index;
-
-
for (var i = 0; i < numChildNodes; i++) {if (window.CP.shouldStopExecution(1)) break;
-
if (childNodes[i].nodeType !== 1) {
-
continue;
-
}
-
-
if (childNodes[i] === clickedListItem) {
-
index = nodeIndex;
-
break;
-
}
-
nodeIndex++;
-
}window.CP.exitedLoop(1);
-
-
-
-
if (index >= 0) {
-
// open PhotoSwipe if valid index found
-
openPhotoSwipe(index, clickedGallery);
-
}
-
return false;
-
};
-
-
// parse picture index and gallery index from URL (#&pid=1&gid=2)
-
var photoswipeParseHash = function () {
-
var hash = window.location.hash.substring(1),
-
params = {};
-
-
if (hash.length < 5) {
-
return params;
-
}
-
-
var vars = hash.split('&');
-
for (var i = 0; i < vars.length; i++) {if (window.CP.shouldStopExecution(2)) break;
-
if (!vars[i]) {
-
continue;
-
}
-
var pair = vars[i].split('=');
-
if (pair.length < 2) {
-
continue;
-
}
-
params[pair[0]] = pair[1];
-
}window.CP.exitedLoop(2);
-
-
if (params.gid) {
-
params.gid = parseInt(params.gid, 10);
-
}
-
-
return params;
-
};
-
-
var openPhotoSwipe = function (index, galleryElement, disableAnimation, fromURL) {
-
var pswpElement = document.querySelectorAll('.pswp')[0],
-
gallery,
-
options,
-
items;
-
-
items = parseThumbnailElements(galleryElement);
-
-
// define options (if needed)
-
options = {
-
-
// define gallery index (for URL)
-
galleryUID: galleryElement.getAttribute('data-pswp-uid'),
-
-
getThumbBoundsFn: function (index) {
-
// See Options -> getThumbBoundsFn section of documentation for more info
-
var thumbnail = items[index].el.getElementsByTagName('img')[0], // find thumbnail
-
pageYScroll = window.pageYOffset || document.documentElement.scrollTop,
-
rect = thumbnail.getBoundingClientRect();
-
-
return { x: rect.left, y: rect.top + pageYScroll, w: rect.width };
-
} };
-
-
-
-
// PhotoSwipe opened from URL
-
if (fromURL) {
-
if (options.galleryPIDs) {
-
// parse real index when custom PIDs are used
-
// http://photoswipe.com/documentation/faq.html#custom-pid-in-url
-
for (var j = 0; j < items.length; j++) {if (window.CP.shouldStopExecution(3)) break;
-
if (items[j].pid == index) {
-
options.index = j;
-
break;
-
}
-
}window.CP.exitedLoop(3);
-
} else {
-
// in URL indexes start from 1
-
options.index = parseInt(index, 10) - 1;
-
}
-
} else {
-
options.index = parseInt(index, 10);
-
}
-
-
// exit if index not found
-
if (isNaN(options.index)) {
-
return;
-
}
-
-
if (disableAnimation) {
-
options.showAnimationDuration = 0;
-
}
-
-
// Pass data to PhotoSwipe and initialize it
-
gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, options);
-
gallery.init();
-
};
-
-
// loop through all gallery elements and bind events
-
var galleryElements = document.querySelectorAll(gallerySelector);
-
-
for (var i = 0, l = galleryElements.length; i < l; i++) {if (window.CP.shouldStopExecution(4)) break;
-
galleryElements[i].setAttribute('data-pswp-uid', i + 1);
-
galleryElements[i].onclick = onThumbnailsClick;
-
}
-
-
// Parse URL and open gallery if it contains #&pid=3&gid=1
-
window.CP.exitedLoop(4);var hashData = photoswipeParseHash();
-
if (hashData.pid && hashData.gid) {
-
openPhotoSwipe(hashData.pid, galleryElements[hashData.gid - 1], true, true);
-
}
-
};
-
-
// execute above function
-
initPhotoSwipeFromDOM('.my-gallery');
-
//# sourceURL=pen.js
-
-
-
-
-
-
-
-
-
-
-
-
/**重点。直接利用jq加载,自动获取图片得 data-size 得参数 */
-
-
window.onload=function(){
-
auto_data_size();
-
};
-
function auto_data_size(){
-
var imgss= $("figure img");
-
$("figure img").each(function() {
-
var imgs = new Image();
-
imgs.src=$(this).attr("src");
-
var w = imgs.width,
-
h =imgs.height;
-
$(this).parent("a").attr("data-size","").attr("data-size",w+"x"+h);
-
})
-
};
-
</script>
-
-
-
</body>
-
-
</html>
-