图片浏览逻辑优化

This commit is contained in:
结发受长生
2019-05-12 09:06:54 +08:00
parent a02e8a0a1b
commit c39fcbc894
4 changed files with 29 additions and 54 deletions
+1 -2
View File
@@ -24,7 +24,6 @@ new Vue({
innerArchive: false,
friends: false,
aboutme: false,
jsonFail: false,
showTags: false,
showCategories: false,
search: null,
@@ -105,7 +104,7 @@ new Vue({
.then((res)=>{
this.items = res.data
}).catch((err) => {
this.jsonFail = true
console.warn('加载文章列表失败')
})
this.showMessage(welcomeMessage(), 6000)
document.addEventListener('copy', () => {
+25 -25
View File
@@ -7,36 +7,36 @@ import Util from './util'
function init() {
let pswpElement = document.querySelectorAll('.pswp')[0]
let $imgArr = document.querySelectorAll('.article-entry img:not(.reward-img)')
let getThumbBoundsFn = function(index) {
var thumbnail = document.querySelectorAll('.article-entry img:not(.reward-img)')[index]
var pageYScroll = window.pageYOffset || document.documentElement.scrollTop
var rect = thumbnail.getBoundingClientRect()
return {x:rect.left, y:rect.top + pageYScroll, w:rect.width}
let imgArr = document.querySelectorAll('.article-entry img:not(.reward-img)')
let getThumbBoundsFn = function(target) {
return function(index) { // index是当前点击的图片在相册中的索引值
var pageYScroll = window.pageYOffset || document.documentElement.scrollTop
var rect = target.getBoundingClientRect()
return {x:rect.left, y:rect.top + pageYScroll, w:rect.width}
}
}
Array.prototype.forEach.call($imgArr, ($em, i) => {
$em.addEventListener('click', function(){
const items = Array.prototype.map.call(imgArr, em => {
let src = em.getAttribute('data-target') || em.getAttribute('src')
let title = em.getAttribute('alt')
// 获得原图尺寸
const image = new Image()
image.src = src
return {
msrc: src, // 缩略图的地址(在动画过程中显示的是缩略图, 这里暂且用相同的地址了)
src,
w: image.width || em.width,
h: image.height || em.height,
title
}
})
Array.prototype.forEach.call(imgArr, (em, index) => {
em.addEventListener('click', function(e){
// slider展开状态
if (document.querySelector('.left-col.show')) return
let items = []
Array.prototype.forEach.call($imgArr, ($em2, i2) => {
let src = $em2.getAttribute('data-target') || $em2.getAttribute('src')
let title = $em2.getAttribute('alt')
// 获得原图尺寸
const image = new Image()
image.src = src
items.push({
msrc: src, // 缩略图的地址(在动画过程中显示的是缩略图, 这里暂且用相同的地址了)
src,
w: image.width || $em2.width,
h: image.height || $em2.height,
title
})
})
var gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, {
index: parseInt(i),
index,
bgOpacity: 0.8,
getThumbBoundsFn
getThumbBoundsFn: getThumbBoundsFn(e.target)
})
gallery.init()
})