纯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 相关文章推荐
深入分析js中的constructor和prototype
Apr 07 Javascript
关于javascript中的typeof和instanceof介绍
Dec 04 Javascript
表格单元格交错着色实现思路及代码
Apr 01 Javascript
IE下Ajax缓存问题的快速解决方法(get方式)
Jan 09 Javascript
javascript中select下拉框的用法总结
Jan 07 Javascript
jQuery实现验证年龄简单思路
Feb 24 Javascript
JS类的定义与使用方法深入探索
Nov 26 Javascript
如何处理JSON中的特殊字符
Nov 30 Javascript
JS实现简单表格排序操作示例
Oct 07 Javascript
Angular2实现组件交互的方法分析
Dec 19 Javascript
layui 监听表格复选框选中值的方法
Aug 15 Javascript
微信小程序indexOf的替换方法(推荐)
Jan 14 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文件读写操作相关函数总结
2014/11/18 PHP
PHP的伪随机数与真随机数详解
2015/05/27 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
2016/04/14 PHP
Yii2.0中使用js异步删除示例
2017/03/10 PHP
PHP 中魔术常量的实例详解
2017/10/26 PHP
基于php双引号中访问数组元素报错的解决方法
2018/02/01 PHP
PHP接入微信H5支付的方法示例
2019/10/28 PHP
关于jQuery中的each方法(jQuery到底干了什么)
2014/03/05 Javascript
jQuery中slice()方法用法实例
2015/01/07 Javascript
javascript最基本的函数汇总
2015/06/25 Javascript
简单介绍JavaScript数据类型之隐式类型转换
2015/12/28 Javascript
详解nodejs微信公众号开发——1.接入微信公众号
2017/04/10 NodeJs
js canvas实现放大镜查看图片功能
2017/06/08 Javascript
JavaScript用二分法查找数据的实例代码
2017/06/17 Javascript
Angular4实现鼠标悬停3d倾斜效果
2017/10/25 Javascript
JavaScript实现全选取消效果
2017/12/14 Javascript
react redux入门示例
2018/04/19 Javascript
创建Vue项目以及引入Iview的方法示例
2018/12/03 Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
2020/08/24 Javascript
[55:23]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
使用Python的Tornado框架实现一个一对一聊天的程序
2015/04/25 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
python 在指定范围内随机生成不重复的n个数实例
2019/01/28 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
Python切割图片成九宫格的示例代码
2020/03/10 Python
世界上最好的旅行夹克:BauBax
2018/12/23 全球购物
优秀团员自我评价范文
2014/04/23 职场文书
小学生读书活动总结
2014/06/30 职场文书
校园文化艺术节宣传标语
2014/10/09 职场文书
自主招生自荐信怎么写
2015/03/24 职场文书
文明旅游倡议书
2015/04/28 职场文书
2019年教师入党申请书
2019/06/27 职场文书
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python
十大最强格斗系宝可梦,超梦X仅排第十,第二最重格斗礼仪
2022/03/18 日漫
剑指Offer之Java算法习题精讲二叉树的构造和遍历
2022/03/21 Java/Android
鸿蒙3.0体验感怎么样? 鸿蒙3.0系统评测向
2022/08/14 数码科技