html如何让图片点击时放大

html如何让图片点击时放大

/* script.js */

var initPhotoSwipeFromDOM = function(gallerySelector) {

var parseThumbnailElements = function(el) {

var thumbElements = el.childNodes,

numNodes = thumbElements.length,

items = [],

figureEl,

linkEl,

size,

item;

for (var i = 0; i < numNodes; i++) {

figureEl = thumbElements[i]; //

element

if (figureEl.nodeType !== 1) {

continue;

}

linkEl = figureEl.children[0]; // element

size = linkEl.getAttribute('data-size').split('x');

item = {

src: linkEl.getAttribute('href'),

w: parseInt(size[0], 10),

h: parseInt(size[1], 10)

};

if (figureEl.children.length > 1) {

item.title = figureEl.children[1].innerHTML;

}

if (linkEl.children.length > 0) {

item.msrc = linkEl.children[0].getAttribute('src');

}

item.el = figureEl;

items.push(item);

}

return items;

};

var closest = function closest(el, fn) {

return el && (fn(el) ? el : closest(el.parentNode, fn));

};

var onThumbnailsClick = function(e) {

e.preventDefault();

var eTarget = e.target || e.srcElement;

var clickedListItem = closest(eTarget, function(el) {

return (el.tagName && el.tagName.toUpperCase() === 'FIGURE');

});

if (!clickedListItem) {

return;

}

var clickedGallery = clickedListItem.parentNode,

childNodes = clickedListItem.parentNode.childNodes,

numChildNodes = childNodes.length,

nodeIndex = 0,

index;

for (var i = 0; i < numChildNodes; i++) {

if (childNodes[i].nodeType !== 1) {

continue;

}

if (childNodes[i] === clickedListItem) {

index = nodeIndex;

break;

}

nodeIndex++;

}

if (index >= 0) {

openPhotoSwipe(index, clickedGallery);

}

return false;

};

var openPhotoSwipe = function(index, galleryElement, disableAnimation, fromURL) {

var pswpElement = document.querySelectorAll('.pswp')[0],

gallery,

options,

items;

items = parseThumbnailElements(galleryElement);

options = {

galleryUID: galleryElement.getAttribute('data-pswp-uid'),

getThumbBoundsFn: function(index) {

var thumbnail = items[index].el.getElementsByTagName('img')[0],

pageYScroll = window.pageYOffset || document.documentElement.scrollTop,

rect = thumbnail.getBoundingClientRect();

return { x: rect.left, y: rect.top + pageYScroll, w: rect.width };

}

};

if (fromURL) {

if (options.galleryPIDs) {

for (var j = 0; j < items.length; j++) {

if (items[j].pid === index) {

options.index = j;

break;

}

}

} else {

options.index = parseInt(index, 10) - 1;

}

} else {

options.index = parseInt(index, 10);

}

if (isNaN(options.index)) {

return;

}

if (disableAnimation) {

options.showAnimationDuration = 0;

}

gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, options);

gallery.init();

};

var galleryElements = document.querySelectorAll(gallerySelector);

for (var i = 0, l = galleryElements.length; i < l; i++) {

galleryElements[i].setAttribute('data-pswp-uid', i + 1);

galleryElements[i].onclick = onThumbnailsClick;

}

};

initPhotoSwipeFromDOM('.image-container');

相关推荐

lol安妮的哥特萝莉皮肤现在值多少钱 2024安妮的哥特萝莉皮肤价格估算
如何通过微信导出聊天记录的详细步骤与技巧
揭秘酷狗音乐歌词审核流程与时效
365体育钱提不出来了

揭秘酷狗音乐歌词审核流程与时效

📅 06-27 👁️ 8437