feat: Support image display fullscreen
This commit is contained in:
parent
661902f0f4
commit
3d85b0926a
@ -36,6 +36,9 @@ nav_text:
|
|||||||
# 文章页是否显示目录
|
# 文章页是否显示目录
|
||||||
toc: true
|
toc: true
|
||||||
|
|
||||||
|
# 文章中的图片是否支持点击放大
|
||||||
|
image_viewer: true
|
||||||
|
|
||||||
# https://github.com/willin/hexo-wordcount
|
# https://github.com/willin/hexo-wordcount
|
||||||
# 是否开启字数统计(关闭请设置enable为false)
|
# 是否开启字数统计(关闭请设置enable为false)
|
||||||
# 也可以单独在md文件里Front-matter设置`no_word_count: true`属性,来自定义关闭字数统计
|
# 也可以单独在md文件里Front-matter设置`no_word_count: true`属性,来自定义关闭字数统计
|
||||||
|
@ -3,12 +3,12 @@
|
|||||||
<%- js('/js/lazyload.min') %>
|
<%- js('/js/lazyload.min') %>
|
||||||
<%- js('/js/busuanzi-2.3.pure.min') %>
|
<%- js('/js/busuanzi-2.3.pure.min') %>
|
||||||
<% if (theme.fancybox){ %>
|
<% if (theme.fancybox){ %>
|
||||||
<%- js('fancybox/jquery.fancybox.min') %>
|
<%- js('fancybox/jquery.fancybox.min') %>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
<% if (theme.toc && is_post()){ %>
|
<% if (theme.toc && is_post()){ %>
|
||||||
<%- js('/js/tocbot.min') %>
|
<%- js('/js/tocbot.min') %>
|
||||||
<script>
|
<script>
|
||||||
// Tocbot_v4.7.0 http://tscanlin.github.io/tocbot/
|
// Tocbot_v4.7.0 http://tscanlin.github.io/tocbot/
|
||||||
tocbot.init({
|
tocbot.init({
|
||||||
tocSelector: '.tocbot',
|
tocSelector: '.tocbot',
|
||||||
@ -24,7 +24,7 @@
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@ -38,10 +38,12 @@
|
|||||||
<script src="https://cdn.jsdelivr.net/npm/jquery-modal@0.9.2/jquery.modal.min.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/jquery-modal@0.9.2/jquery.modal.min.js"></script>
|
||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/jquery-modal@0.9.2/jquery.modal.min.css">
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/jquery-modal@0.9.2/jquery.modal.min.css">
|
||||||
|
|
||||||
|
<% if (theme.image_viewer){ %>
|
||||||
|
<%- partial('viewer') %>
|
||||||
|
<% } %>
|
||||||
|
|
||||||
<% if (theme.mathjax){ %>
|
<% if (theme.mathjax){ %>
|
||||||
<%- partial('mathjax') %>
|
<%- partial('mathjax') %>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
<script type="text/javascript" src="https://js.users.51.la/20544303.js"></script>
|
<script type="text/javascript" src="https://js.users.51.la/20544303.js"></script>
|
||||||
|
|
||||||
|
|
||||||
|
106
layout/_partial/viewer.ejs
Normal file
106
layout/_partial/viewer.ejs
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
<!-- Root element of PhotoSwipe. Must have class pswp. -->
|
||||||
|
<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>
|
||||||
|
|
||||||
|
<!-- Slides wrapper with overflow:hidden. -->
|
||||||
|
<div class="pswp__scroll-wrap">
|
||||||
|
|
||||||
|
<!-- Container that holds slides.
|
||||||
|
PhotoSwipe keeps only 3 of them in the DOM to save memory.
|
||||||
|
Don't modify these 3 pswp__item elements, data is added later on. -->
|
||||||
|
<div class="pswp__container">
|
||||||
|
<div class="pswp__item"></div>
|
||||||
|
<div class="pswp__item"></div>
|
||||||
|
<div class="pswp__item"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
|
||||||
|
<div class="pswp__ui pswp__ui--hidden">
|
||||||
|
|
||||||
|
<div class="pswp__top-bar">
|
||||||
|
|
||||||
|
<!-- Controls are self-explanatory. Order can be changed. -->
|
||||||
|
|
||||||
|
<div class="pswp__counter"></div>
|
||||||
|
|
||||||
|
<button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
|
||||||
|
|
||||||
|
<button class="pswp__button pswp__button--share" style="display:none" 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>
|
||||||
|
|
||||||
|
<!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->
|
||||||
|
<!-- element will get class pswp__preloader--active when preloader is running -->
|
||||||
|
<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>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/photoswipe.min.css">
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/default-skin/default-skin.css">
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/photoswipe.min.js"></script>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/photoswipe-ui-default.min.js"></script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function viewer_init() {
|
||||||
|
let pswpElement = document.querySelectorAll('.pswp')[0];
|
||||||
|
let $imgArr = document.querySelectorAll(('.article-entry img:not(.reward-img)'))
|
||||||
|
|
||||||
|
$imgArr.forEach(($em, i) => {
|
||||||
|
$em.onclick = () => {
|
||||||
|
// slider展开状态
|
||||||
|
// todo: 这样不好,后面改成状态
|
||||||
|
if (document.querySelector('.left-col.show')) return
|
||||||
|
let items = []
|
||||||
|
$imgArr.forEach(($em2, i2) => {
|
||||||
|
let img = $em2.getAttribute('data-idx', i2)
|
||||||
|
let src = $em2.getAttribute('data-target') || $em2.getAttribute('src')
|
||||||
|
let title = $em2.getAttribute('alt')
|
||||||
|
// 获得原图尺寸
|
||||||
|
const image = new Image()
|
||||||
|
image.src = src
|
||||||
|
items.push({
|
||||||
|
src: src,
|
||||||
|
w: image.width || $em2.width,
|
||||||
|
h: image.height || $em2.height,
|
||||||
|
title: title
|
||||||
|
})
|
||||||
|
})
|
||||||
|
var gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, {
|
||||||
|
index: parseInt(i)
|
||||||
|
});
|
||||||
|
gallery.init()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
viewer_init()
|
||||||
|
</script>
|
Loading…
Reference in New Issue
Block a user