Hugo Fancybox实现图片灯箱效果
博客创建成功之后,发现文章中的图片看不清。可是图片本身是很清晰的,在新tab打开是好的。因此,想要实现点击图片自动放大的效果,即灯箱效果。
查找方案
由于我们使用的是Hugo,我们找一下是否有现成方案,网络搜索找到一篇Hugo Fancybox,可以参考其中的方法。使用Fancybox。
实施方案
找到官网的fancybox用法,发现和上面的博客用法不一样,仔细查看发现使用的js不一样。我们以官网的最新用法为例。
找到layouts/partials/head.html
或者其他会出现在<head>
中的地方,增加加载js的代码。我们从cdnjs找到fancyapps-ui 。由于我们的首页没有图片,因此我们判断了IsHome
,在首页时不加载fancyapps,让首页加载更快。
1
2
3
4
| {{ if and (not .IsHome) .Site.Params.usefancyapp }}
<script src="https://cdnjs.cloudflare.com/ajax/libs/fancyapps-ui/5.0.36/fancybox/fancybox.umd.min.js" integrity="sha512-VNk0UJk87TUyZyWXUFuTk6rUADFyTsVpVGaaFQQIgbEXAMAdGpYaFWmguyQzEQ2cAjCEJxR2C++nSm0r2kOsyA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancyapps-ui/5.0.36/fancybox/fancybox.min.css" integrity="sha512-s4DOVHc73MjMnsueMjvJSnYucSU3E7WF0UVGRQFd/QDzeAx0D0BNuAX9fbZSLkrYW7V2Ly0/BKHSER04bCJgtQ==" crossorigin="anonymous" referrerpolicy="no-referrer" />
{{ end }}
|
修改render-image
添加layouts/_default/_markup/render-image.html
文件,
1
2
3
4
5
6
7
8
9
10
|
{{if .Page.Site.Params.usefancyapp }}
<div class="post-img-view">
<a data-fancybox="gallery" href="{{ .Destination | safeURL }}" data-caption="{{ .Text }}" >
<img src="{{ .Destination | safeURL }}" alt="{{ .Text }}" {{ with .Title}} title="{{ . }}"{{ end }} />
</a>
</div>
{{ end }}
|
增加event handler
找到layouts/partials/footer.html
,添加event handler
1
2
3
4
5
6
7
8
| {{ if and (not .IsHome) .Site.Params.usefancyapp }}
<script>
Fancybox.bind("[data-fancybox]", {
// Your custom options
});
</script>
{{ end }}
|
修改config.toml
在params下面,增加usefancyapp
1
2
| [params]
usefancyapp = true
|
查看效果
更新成功之后,点击图片,就可以看到灯箱效果。
视频演示
Watch on YouTube