前言
Fancybox 是一个用于创建灵活且可定制的图片和媒体弹出框的JavaScript库。 Fancybox v5是其最新版本。要使用Fancybox v5,需要在HTML文件中包含必要的CSS和JavaScript文件,以及一个HTML元素作为触发器。 然后,使用Fancybox.bind方法来绑定Fancybox到该元素。
这边稍微研究一下。
使用步骤
引入fancybox
1 2 3
| <script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui@5.0/dist/fancybox/fancybox.umd.min.js"></script> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/ui@5.0/dist/fancybox/fancybox.min.css" />
|
触发器
简单的例子为:
1 2 3 4 5 6 7
| <a href="01.png" data-fancybox="gallery" data-caption="这是图片名称1"> <img src="01.png" /> </a> <a href="02.png" data-fancybox="gallery" data-caption="这是图片名称2"> <img src="02.png" /> </a>
|
<a>
标签中的 data-fancybox
属性将告诉Fancybox要绑定到这个元素。
data-caption="这是图片名称"
这个可以省略
使用Fancybox.bind方法来绑定Fancybox到该元素
假设页面已经引入jQuery库
1 2 3 4 5 6 7 8 9 10
| $(document).ready(function() { Fancybox.bind("[data-fancybox]", { dragToClose: false, wheel: false, click: false, dblclick: false, buttons: ["zoom", "fullScreen", "close"], }); });
|
这段代码需要添加到您的JavaScript文件中,这样,它将在页面加载时执行,并绑定Fancybox到所有包含 data-fancybox
属性的元素。
假设页面没有引入jQuery库
这时候需要使用JavaScript的原生方法来在文档加载完成时调用 Fancybox.bind()
一种方法是在 window
对象上添加 load
事件监听器,该监听器将在所有资源(例如图像和样式表)加载完成后触发。然后,在事件回调函数中调用 Fancybox.bind()
方法。示例代码如下:
1 2 3 4 5 6 7 8 9 10
| window.addEventListener("load", function() { Fancybox.bind("[data-fancybox]", { dragToClose: false, wheel: false, click: false, dblclick: false, buttons: ["zoom", "fullScreen", "close"], }); });
|
另一种方法是在 document
对象上添加 DOMContentLoaded
事件监听器,该监听器将在HTML文档解析完成后触发。这意味着该事件在图像和其他资源加载之前触发,因此可以更快地绑定Fancybox。示例代码如下:
1 2 3 4 5 6 7 8 9 10
| document.addEventListener("DOMContentLoaded", function() { Fancybox.bind("[data-fancybox]", { dragToClose: false, wheel: false, click: false, dblclick: false, buttons: ["zoom", "fullScreen", "close"], }); });
|
效果
好像和v4也没啥区别~~~
页面代码
引入Jquery后整个页面代码为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Fancybox Test</title>
<script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui@5.0/dist/fancybox/fancybox.umd.min.js"></script> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/ui@5.0/dist/fancybox/fancybox.min.css" />
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.4/dist/jquery.min.js"></script>
</head> <body>
<script> $(document).ready(function() { Fancybox.bind("[data-fancybox]", { dragToClose: false, wheel: false, click: false, dblclick: false, buttons: ["zoom", "fullScreen", "close"], }); }); </script>
<a href="01.png" data-fancybox="gallery" data-caption="这是图片名称1"> <img src="01.png" /> </a>
<a href="02.png" data-fancybox="gallery" data-caption="这是图片名称2"> <img src="02.png" /> </a>
</body> </html>
|