纯JS开发baguetteBox.js响应式画廊插件


Posted in Javascript onJune 28, 2020

baguetteBox.js 是一个简单和易于使用的响应式的图像 Lightbox 插件,支持滑动手势在移动设备上使用。纯 JavaScript 实现,不依赖第三方库和插件,赶紧来体验吧。

纯JS开发baguetteBox.js响应式画廊插件

效果演示    下载源码

好了,看下本文重点内容。

baguetteBox.js

baguetteBox.js 是一个简单和易于使用lightbox纯JavaScript脚本,拥有图像放大缩小并带有相应的CSS3过度,并能在触摸屏等设备上完美展示。

Demo页面

github
中文使用

特点

  • 纯JS编写,无任何依赖
  • 支持多重画廊(Multiple-gallery)效果, 且允许自定义参数
  • 支持手势滑动(仅在支持多点触控设备上)
  • 现代简约风格
  • 图像字幕支持
  • 响应式的图像
  • CSS3转换
  • SVG按钮,没有额外的文件下载
  • 压缩后大约2.3KB

安装方法

使用npm安装

npm install baguettebox.js

使用Bower

bower install baguettebox.js

通用安装方法安装

下载baguetteBox.min.css和baguetteBox.min.js文件并添加到你的页面:

<link rel="stylesheet" href="css/baguetteBox.min.css" rel="external nofollow" >
<script src="js/baguetteBox.min.js" async></script>

注意:如果使用了async属性,将只能运行在服务器环境,而不是当做网页直接打开,类似file:///D:/demo/demo.html.

用法

初始化脚本运行:

baguetteBox.run('.gallery', {
 // Custom options
});

其中第一个参数是一个选择器包含一个标签。HTML代码可能看起来像这样:

<div class="gallery">
	<a href="img/2-1.jpg" rel="external nofollow" rel="external nofollow" data-caption="Image caption"><img src="img/thumbs/2-1.jpg"></a>
	<a href="img/2-2.jpg" rel="external nofollow" ><img src="img/thumbs/2-2.jpg"></a>
 ...
</div>

title 或者 data-caption 标签来描述图片。
当一个div标签里有多组a链接组成的图片时,单击其中一张图片会发现自动有左右翻页效果。

demo

<!DOCTYPE html>
<head>
 <meta charset="utf-8">
 <title>demo</title>
	<link rel="stylesheet" href="css/baguetteBox.css" rel="external nofollow" >
	<script src="js/baguetteBox.js"></script>
</head>

<body>
 <div class="gallery">
 <a href="img/image-1.jpg" rel="external nofollow" rel="external nofollow" data-caption="图片描述"><img src="img/thumb-1.jpg"></a>
 <a href="img/image-1.jpg" rel="external nofollow" rel="external nofollow" data-caption="图片描述"><img src="img/thumb-1.jpg"></a>
</div>
</body>

<script>
	baguetteBox.run('.gallery', {
	 // Custom options
	});
</script>

附加方法

  • showNext - 切换到下一张图片
  • showPrevious - 切换到上一张图片
  • destroy - remove the plugin with any event bindings

The first two methods return true on success or false if there's no more images to be loaded.

响应式图片

如果需要响应式图片,可以分别在a标签加入data-at-{width}属性,{width}是图片可显示的最大宽度,baguetteBox.js会在页面初始化(窗口手动改变大小不会再响应)时选择相应的尺寸。

下面是一些示例:

<a href="img/2-1.jpg" rel="external nofollow" rel="external nofollow" 
 data-at-450="img/thumbs/2-1.jpg" 
 data-at-800="img/small/2-1.jpg" 
 data-at-1366="img/medium/2-1.jpg" 
 data-at-1920="img/big/2-1.jpg">
 <img src="img/thumbs/2-1.jpg">
</a>

如果屏幕分辨率是1366x768,baguetteBox.js将会选择"img/medium/2-1.jpg". 如果是1440x900则会选择 "img/big/2-1.jpg". Keep href attribute as a fallback (link to a bigger image e.g. of HD size) for older browsers.

自定义配置

你可以在第二个参数位置传入一个对象来进行一些自定义设置. 下面是可用的缺省设置:

baguetteBox.run('.gallery', {
 captions: true, // true|false|callback(element) - 显示图片说明
 buttons: 'auto', // 'auto'|true|false - 显示翻页按钮
 async: false, // true|false - 异步加载
 preload: 2, // [number] - 需要预加载图片的个数
 animation: 'slideIn', // 'slideIn'|'fadeIn'|false - 动画
 afterShow: null, // callback - To be run after showing the overlay
 afterHide: null, // callback - To be run after hiding the overlay
 onChange: null, // callback(currentIndex, imagesElements.length) - When image changes
 filter: /.+\.(gif|jpe?g|png|webp)/i // RegExp object - 正则去匹配文件
});
  • captions: 'callback' applies a caption returned by the callback. Invoked in the context of an array of gallery images.
  • buttons: 'auto' 在触摸设备或者只有一个图片时buttons会自动隐藏,即false.

兼容性

  • IE 8+
  • Chrome
  • Firefox 3.6+
  • Opera 12+
  • Safari 5+
  • Sleipnir

申明

baguetteBox.js的灵感来自一个jQuery插件:touchTouch.

许可

Copyright (c) 2015 feimosi

This content is released under the MIT License.

到此这篇关于纯JS开发baguetteBox.js响应式画廊插件的文章就介绍到这了,更多相关baguetteBox.js响应式插件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
ExtJS 设置级联菜单的默认值
Jun 13 Javascript
再说AutoComplete自动补全之实现原理
Nov 05 Javascript
浅析showModalDialog数据缓存问题(用禁止浏览器缓存解决)
Jul 09 Javascript
Html5的placeholder属性(IE兼容)实现代码
Aug 30 Javascript
JS实现点击按钮自动增加一个单元格的方法
Mar 09 Javascript
jQuery垂直多级导航菜单代码分享
Aug 18 Javascript
微信小程序中用WebStorm使用LESS
Mar 08 Javascript
Angular表格神器ui-grid应用详解
Sep 29 Javascript
angularjs实现柱状图动态加载的示例
Dec 11 Javascript
jquery获取img的src值实例介绍
Jan 16 jQuery
基于JS实现前端压缩上传图片的实例代码
May 14 Javascript
基于javascript实现碰撞检测
Mar 12 Javascript
JavaScript图片旋转效果实现方法详解
Jun 28 #Javascript
javascript+css实现俄罗斯方块小游戏
Jun 28 #Javascript
详解小程序横屏方案对比
Jun 28 #Javascript
微信小程序实现上传多张图片、删除图片
Jul 29 #Javascript
js模拟实现百度搜索
Jun 28 #Javascript
微信小程序地图实现展示线路
Jul 29 #Javascript
vuex实现购物车的增加减少移除
Jun 28 #Javascript
You might like
聊天室php&amp;mysql(五)
2006/10/09 PHP
php设计模式 Facade(外观模式)
2011/06/26 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
2016/09/22 PHP
详解EventDispatcher事件分发组件
2016/12/25 PHP
php封装单文件上传到数据库(路径)
2017/10/15 PHP
php实现微信分享朋友链接功能
2019/02/18 PHP
一些易混淆且不常用的属性,希望有用
2007/01/29 Javascript
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
2011/02/14 Javascript
js Function类型
2011/12/04 Javascript
jQuery源码分析之jQuery中的循环技巧详解
2014/09/06 Javascript
js实现在同一窗口浏览图片
2014/09/17 Javascript
js实现鼠标感应向下滑动隐藏菜单的方法
2015/02/20 Javascript
js实现表单及时验证功能 用户信息立即验证
2016/09/13 Javascript
jQuery动态添加与删除tr行实例代码
2016/10/18 Javascript
Angularjs之filter过滤器(推荐)
2016/11/27 Javascript
jQuery实现获取h1-h6标题元素值的方法
2017/03/06 Javascript
Vue实现美团app的影院推荐选座功能【推荐】
2018/08/29 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
js实现网页随机验证码
2020/10/19 Javascript
Vue 数据响应式相关总结
2021/01/28 Vue.js
深入剖析Python的爬虫框架Scrapy的结构与运作流程
2016/01/20 Python
Python模拟用户登录验证
2017/09/11 Python
pyqt5 tablewidget 利用线程动态刷新数据的方法
2019/06/17 Python
在django view中给form传入参数的例子
2019/07/19 Python
python爬虫刷访问量 2019 7月
2019/08/01 Python
Python操作注册表详细步骤介绍
2020/02/05 Python
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
世界上最好的野生海鲜和有机食品:Vital Choice
2020/01/16 全球购物
长青弘远的面试题
2012/06/09 面试题
幼儿园运动会加油词
2014/02/14 职场文书
广播节目策划方案
2014/05/23 职场文书
完整版商业计划书
2014/09/15 职场文书
2014年教研工作总结
2014/12/06 职场文书
违纪检讨书
2015/01/27 职场文书
实习生辞职信范文
2015/03/02 职场文书
Redis 异步机制
2022/05/15 Redis