LV02-NexT-04-fancybox
本文主要是fancybox使用的一个bug修复的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。
点击查看使用工具及版本
Windows | windows11 |
Ubuntu | Ubuntu16.04的64位版本 |
VMware® Workstation 16 Pro | 16.2.3 build-19376536 |
点击查看本文参考资料
参考方向 | 参考原文 |
--- | --- |
文章是后来又整理的,可能不适用于最新版的主题,可以作为参考。
一、fancybox
简介
fancybox
是一款基于jquery开发的类Lightbox插件,它可能是世界上最受欢迎的lightbox
脚本了。这个脚本它依赖于jquery
,其中jQuery 3+
是首选,但fancybox
也兼容jQuery 1.9.1+
和jQuery 2+
。
二、基本使用
这里借用fancybox
官网首页的快速开始的例子,最基本的使用方式如下所示。
1 | <!-- 1. Add latest jQuery and fancybox files --> |
示例如下图所示(点击图片可以查看我的博客中fancybox的使用效果):
三、在NexT
主题中的问题
首先,聊一聊整个问题是怎么发现及产生的。在NexT
中,已经加载了fancybox
的所需脚本,所以我们直接在主题配置文件中将其打开就可以了。
1 | yaml [blogRoot]/_config.next.yaml |
但是在开启后,我们去放大图片,会发现是没有问题的,但是在关闭图片预览的时候,整个页面会向左抖动一下,具体原因是,fancybox
在开启图片预览后,是遮盖了原来的页面,相当于蒙上了一个黑色但是透明的页面,这个时候右侧原来的滚动条是被隐藏了,当关闭图片预览的时候,滚动条重新出现,导致整个页面有一个向左抖动的情况,那么怎么解决整个问题呢?
我们去fancybox
的github
仓库去看源码,会发现有这么一个参数hideScrollbar
,就是导致了放大图片的时候滚动条隐藏的原因,将其值设置为true
就可以使滚动条一直显示,这样就解决了整个抖动的问题。
然后我们来解决NexT
中的这个问题。新建一个脚本文件myfancybox.js
,并添加以下代码:
1 | $.fancybox.defaults.hideScrollbar = false; // 使右侧滚动条一直显示 |
在[blogRoot]/themes/next/layout/_layout.njk
文件的<body></body>
中引用该文件即可
1 | # [blogRoot]/themes/next/layout/_layout.njk |
然后再 hexo cl && hexo g && hexo s
就可以发现抖动的问题解决了。