首页 > 其他分享 >支持无限加载的js图片画廊插件

支持无限加载的js图片画廊插件

时间:2024-11-25 15:33:32浏览次数:9  
标签:__ gallery 插件 button pswp js div class 加载

在线演示   下载

 

 

natural-gallery-js是一款支持无限加载的js图片画廊插件。该js图片画廊支持图片的懒加载,可以对图片进行搜索,分类,还可以以轮播图的方式来展示和切换图片。

 

 使用方法

在页面中引入下面的CSS和js文件。

<link rel="stylesheet" href="../dist/themes/natural.css"> <link rel="stylesheet" href="../dist/natural-gallery.full.css"> <script src="../dist/natural-gallery.full.js" defer></script>
 HTML结构

使用一个<div>作为图片画廊的容器。

<div id="myGallery""></div>

然后添加PhotoSwipe轮播图模板。

<div class="myPhotoswipe" tabindex="-1" role="dialog" aria-hidden="true">     <div class="pswp__bg"></div>     <div class="pswp__scroll-wrap">         <div class="pswp__container">             <div class="pswp__item"></div>             <div class="pswp__item"></div>             <div class="pswp__item"></div>         </div>         <div class="pswp__ui pswp__ui--hidden">             <div class="pswp__top-bar">                 <div class="pswp__counter"></div>                 <button class="pswp__button pswp__button--close" title="Close (Esc)"></button>                 <button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>                 <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>                 <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>

以及下面的一些操作图标。

<svg version="1.1" xmlns="http://www.w3.org/2000/svg"  viewBox="0 0 100 100"  xml:space="preserve" style="display:none;">     <g id="icon-search">         <path d="M67.647,61.054c1.74-1.741,3.046-3.706,3.916-5.896c0.87-2.19,1.305-4.422,1.305-6.696c0-2.274-0.435-4.52-1.305-6.738             c-0.87-2.218-2.176-4.197-3.916-5.938c-1.741-1.741-3.706-3.032-5.896-3.874c-2.19-0.842-4.436-1.263-6.738-1.263             c-2.302,0-4.549,0.421-6.738,1.263c-2.19,0.842-4.155,2.134-5.896,3.874s-3.046,3.72-3.916,5.938             c-0.87,2.218-1.305,4.464-1.305,6.738c0,2.274,0.435,4.506,1.305,6.696c0.87,2.19,2.176,4.155,3.916,5.896             c1.741,1.74,3.706,3.046,5.896,3.916c2.19,0.87,4.436,1.305,6.738,1.305s4.548-0.435,6.738-1.305             C63.941,64.1,65.906,62.794,67.647,61.054z M77.754,25.679c3.145,3.144,5.503,6.696,7.075,10.654             c1.572,3.959,2.358,7.987,2.358,12.086s-0.786,8.128-2.358,12.086c-1.572,3.959-3.93,7.51-7.075,10.654             c-2.526,2.527-5.334,4.548-8.422,6.064c-3.088,1.516-6.288,2.526-9.602,3.032c-3.313,0.506-6.64,0.478-9.98-0.084             c-3.341-0.562-6.528-1.628-9.56-3.201L25.703,91.459c-0.842,0.842-1.769,1.459-2.779,1.853c-1.011,0.393-2.064,0.59-3.158,0.59             s-2.148-0.197-3.158-0.59c-1.011-0.393-1.937-1.011-2.779-1.853c-0.842-0.842-1.46-1.769-1.853-2.779             c-0.393-1.011-0.59-2.064-0.59-3.158s0.197-2.147,0.59-3.158c0.393-1.011,1.011-1.937,1.853-2.779l13.981-13.981             c-1.965-3.088-3.341-6.401-4.127-9.939c-0.786-3.538-0.997-7.075-0.632-10.612c0.365-3.537,1.32-6.977,2.864-10.318             c1.544-3.341,3.664-6.359,6.359-9.054c3.144-3.088,6.696-5.418,10.654-6.991c3.959-1.572,7.987-2.358,12.086-2.358             c4.099,0,8.128,0.786,12.086,2.358C71.058,20.261,74.61,22.591,77.754,25.679z"/>     </g>     <g id="icon-next">         <polygon points="88.126,24.216 50.036,62.306 11.947,24.216 0.355,35.809 50.036,85.49 99.718,35.809       "/>     </g>     <g id="icon-category">         <path d="M98.929,28.421L87.854,17.346c-1.311-1.311-3.436-1.311-4.747,0L36.974,63.48L17.353,43.859             c-1.31-1.311-3.436-1.311-4.746,0L1.532,54.933c-1.311,1.31-1.311,3.436,0,4.747l33.069,33.069             c0.655,0.656,1.514,0.983,2.373,0.983c0.859,0,1.718-0.328,2.373-0.983l59.581-59.582c0.63-0.629,0.983-1.483,0.983-2.373             C99.912,29.904,99.559,29.05,98.929,28.421z"/>     </g>     <g id="icon-pict">         <path d="M8.603,16.406v77.478H91.47V16.406H8.603z M82.018,26.091V72.5l-14.65-17.355L54.369,66.581L36.093,44.649L18.055,69.808             V26.091H82.018z"/>         <path d="M60.643,46.263c3.655,0,6.617-3.034,6.617-6.774c0-3.744-2.962-6.779-6.617-6.779c-3.654,0-6.617,3.035-6.617,6.779             C54.026,43.228,56.989,46.263,60.643,46.263z"/>     </g>     <g id="icon-noresults">         <path d="M99.912,6.908L6.821,100l-5.812-5.812L94.1,1.096L99.912,6.908z M68.442,8.462L5.237,71.349V8.462H68.442z M35.174,27.716             c0-6.075-4.925-10.999-10.999-10.999c-6.129,0-10.999,4.988-10.999,10.999c0,6.012,4.87,10.999,10.999,10.999             C30.25,38.716,35.174,33.791,35.174,27.716z M88.514,82.787c-3.364,0-25.162,0-28.576,0l-5.895-11.473l-6.014,5.984l2.738,5.489             c-0.846,0-2.921,0-8.254,0l-9.896,9.847h63.07V29.881L73.257,52.198C78.41,62.531,88.123,82.004,88.514,82.787z"/>     </g> </svg>                  
 初始化插件

最后通过下面的js代码来初始化该图片画廊插件。

var containerRef = document.getElementById('myGallery'); // uses HTMLElement reference as container var photoswipeRef = document.getElementById('myPhotoswipe'); // photoswipe template if required   // Create your gallery options var options = {       format: 'natural | square',       // Max row height. Works for both natural and square format. Prefer this option for a "responsive" approach     rowHeight: 350,       // Only for square format. Disables responsive     imagesPerRow: 4,       round: 3, // Rounded corner     margin: 3, // Gap between thumbnails     limit: 0, // Number of rows, activate pagination (disables infinite scroll)     minRowsAtStart: 2, // Initial number of rows. If null, gallery tries to define the number of required rows to fill the viewport.       showLabels: 'hover | always | never', // When to show the labels in thumbnails       lightbox: true, // Open a lightbox with a bigger image -> activate a zoom effect on hover on thumbnails     zoomRotation: true,       // Number of pixels to offset the infinite scroll autoload     // If negative, next rows will load before the bottom of gallery container is visible     // If 0 the next rows will load when the bottom of the gallery will be visible     // If positive, the next rows will load when the bottom of the gallery will be this amount above the end of the viewport.     // If positive be sure to always have this number of pixels as margin, padding or more content after the gallery.     infiniteScrollOffset: 0,       // Header / Search options.     showCount: false,     searchFilter: false,     categoriesFilter: false,     showNone: false,     showOthers: false,     labelCategories: 'Category',     labelNone: 'None',     labelOthers: 'Others',     labelSearch: 'Search',     labelImages: 'Images', };   var images  = [     {         "thumbnail": "thumb.jpg",         "enlarged": "big.jpg",         "title": "Antonio Ron",         "categories": [             {                 "id": 4,                 "title": "Nature",                 "photo_count": 41787,                 "links": {                     "self": "https://api.unsplash.com/categories/4",                     "photos": "https://api.unsplash.com/categories/4/photos"                 }             }         ],         "tWidth": 443.74009508716324,         "tHeight": 300,         "eWidth": 2800,         "eHeight": 1893     },     {...} ];     // Create a gallery var gallery = new Gallery(containerRef, photoswipeRef, options);    

标签:__,gallery,插件,button,pswp,js,div,class,加载
From: https://www.cnblogs.com/mybook000/p/18567665

相关文章

  • (免费送源码)计算机毕业设计原创定制:Java+ B/S+JSP+ springboot 基于SpringBoot的健康管
    摘 要随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,健康管理系统被用户普遍使用,为方便用户能够可以随时进行健康管理系统的数据信息管理,特开发了基于springboot的健康管理系......
  • 如何在CodeIgniter中添加或加载模型
    在CodeIgniter框架中,模型(Model)是用于与数据库进行交互的重要组件。模型通常包含数据库查询、业务逻辑以及与数据库表相关的函数。以下是如何在CodeIgniter中添加或加载模型的步骤:1.创建模型文件首先,你需要在application/models目录下创建一个PHP文件来定义你的模型。文件名......
  • vite.config.js配置入门详解
    一,搭建vite项目兼容性注意:Vite需要 Node.js 版本14.18+,16+。然而,有些模板需要依赖更高的Node版本才能正常运行,当你的包管理器发出警告时,请注意升级你的Node版本。通过下面的命令行可以创建指定项目名称和你想要使用的模板的vue项目#npm6.xnpmcreatevite@......
  • 「Java EE开发指南」如何使用Visual JSF编辑器设计JSP?(二)
    VisualJSFDesigner的目标是使创建JSF应用程序的特定于组件的工作更容易可视化,在本教程中,您将使用可视化设计器设计JSF登录页面,将学习如何:创建一个JSF项目创建一个新的JSF页面设计JSF页面该功能在MyEclipse中可用。MyEclipsev2024.1离线版下载MyEclipse技术交流群:74233......
  • JS的for循环和forEach有什么区别?
    JavaScript中的 for 循环和 forEach 方法虽然都可以用来遍历数组,但它们之间存在一些关键的区别:1.语法和用法for循环:是传统的方法,使用最广泛的循环结构。语法相对复杂,需要手动管理循环变量(如 i)、起始值、结束条件以及迭代表达式。示例:for(leti=0;i<array.......
  • 带排序功能的js masonry瀑布流插件
    在线预览  下载 sortableJs是一款带排序功能的jsmasonry瀑布流插件。sortableJs能够使元素以卡片形式显示,并以masonry瀑布流方式进行布局,通过点击分类按钮,可以将卡片按指定的方式动态排序。  使用方法在页面中引入sortable.min.css和sortable.min.js文件。<link......
  • 说说你对js包装对象的理解
    在JavaScript中,基本类型(primitivetypes)例如数字、字符串、布尔值、null和undefined,本身并不是对象。然而,为了方便开发者访问属性和方法,JavaScript提供了一种机制,当我们试图访问基本类型的属性或方法时,它会自动创建一个对应的包装对象(wrapperobject)。这个包装对象是临时的......
  • 举例说明js关闭当前窗口有哪些方法?
    JS关闭当前窗口的方法有很多种,但并非所有方法都universallyreliable,因为浏览器安全策略的限制。以下是一些常见方法,并附带其局限性:1.window.close():说明:这是关闭窗口最常用的方法。局限性:只能关闭通过JavaScript代码打开的窗口。如果窗口不是由JavaScript打开的,......
  • 保护js代码的方式有哪些?分别说说他们的原理是什么?
    保护JavaScript代码的方式有很多种,但没有一种是绝对安全的。攻击者如果有足够的决心和资源,总有可能破解你的代码。所以,保护JavaScript代码的目标是提高攻击的门槛,使其变得更加困难和耗时,而不是完全阻止逆向工程。以下是一些常见的JavaScript代码保护方法,以及它们的原理:1.......
  • 如何使用js来截图?怎样截可见区域和整个页面?
    在前端使用JavaScript进行截图,主要依赖于html2canvas这个库。它可以将DOM元素渲染成Canvas,然后你可以将Canvas转换为图片。1.使用html2canvas截取可见区域:importhtml2canvasfrom'html2canvas';constcaptureVisibleArea=()=>{html2canvas(document.body......