图片浏览逻辑优化

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

View File

@ -1,7 +1,7 @@
<nav id="mobile-nav">
<div class="overlay js-overlay" ></div>
<div class="overlay js-overlay" ></div>
<div class="btnctn js-mobile-btnctn">
<div class="slider-trigger list" @click="openSlider($event, 'innerArchive')"><i class="icon icon-sort"></i></div>
<div class="slider-trigger list" @click="openSlider($event, 'innerArchive')"><i class="icon icon-sort"></i></div>
</div>
<div class="intrude-less">
<header id="header" class="inner">
@ -34,5 +34,5 @@
</nav>
</header>
</div>
<div class="mobile-mask" style="display:none" q-show="isShow"></div>
<div class="mobile-mask" style="display:none" v-show="isShow"></div>
</nav>

View File

@ -58,30 +58,6 @@
</ul>
</div>
<ul class="search-ul">
<p v-if="jsonFail" style="padding: 20px; font-size: 12px;">
缺失模块。<br/>1、请确保node版本大于6.2<br/>2、在博客根目录注意不是yilia根目录执行以下命令<br/> npm i hexo-generator-json-content --save<br/><br/>
3、在根目录_config.yml里添加配置
<pre style="font-size: 12px;" v-if="jsonFail">
jsonContent:
meta: false
pages: false
posts:
title: true
date: true
path: true
text: false
raw: false
content: false
slug: false
updated: false
comments: false
link: false
permalink: false
excerpt: false
categories: false
tags: true
</pre>
</p>
<li class="search-li" v-for="item in items" v-show="!item.isHide">
<a :href="item.path|urlformat" class="search-title"><i class="icon-quo-left icon"></i>
<span v-text="item.title"></span>

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', () => {

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()
})