baguetteBox.js是一款支持移动设备的响应式lightbox插件。baguetteBox.js有纯javascript编写,支持响应式图片和CSS3动画过渡效果,支持移动手机,压缩后的版本仅2.7K。baguetteBox.js插件的特点还有:
- 同一个页面支持多个lightbox实例,互不影响。
- 支持移动触摸设备。
- 支持全屏模式。
- 支持显示图片标题。
- 支持响应式图片。
- 支持CSS3过渡动画。
- 按钮使用SVG,不需要额外的图片。
- 压缩后的版本仅2.7K。
安装
可以通过npm、yarn或bower来安装baguetteBox.js插件。
npm install baguettebox.js --save
yarn add baguettebox.js
bower install baguettebox.js --save
使用方法
在页面中引入baguetteBox.js和baguetteBox.css文件。
<link rel="stylesheet" href="path/to/baguetteBox.css">
<script src="path/to/baguetteBox.js"></script>
HTML结构
baguetteBox.js lightbox图片画廊的基本HTML结构如下:
<div class="gallery">
<a href="img/2-1.jpg" data-caption="Image caption">
<img src="img/thumbs/2-1.jpg" alt="First image">
</a>
<a href="img/2-2.jpg">
<img src="img/thumbs/2-2.jpg" alt="Second image">
</a>
...
</div>
如果要使用图片标题,可以在a标签上添加title或data-caption属性。
初始化插件
在页面DOM元素加载完毕,可以通过run()方法来初始化该lightbox插件。其中传入的参数为图片画廊的父容器选择器名称。
baguetteBox.run('.gallery');
配置参数
你可以在初始化时,在第二个参数中以对象的方式传入配置参数:
baguetteBox.run('.gallery', {
// 配置参数
});
| 参数 | 类型 | 默认值 | 描述 |
| captions | Boolean | function(element) | true | 是否显示图片标题。如果传入的是一个函数,必须返回一个字符串。 |
| buttons | Boolean | 'auto' | 'auto' | 是否显示导航按钮。设置为auto表示在移动设备或仅有一张图片时隐藏导航按钮。 |
| fullScreen | Boolean | false | 是否允许全屏模式。 |
| noScrollbars | Boolean | false | 是否在画廊显示时隐藏滚动条。 |
| titleTag | Boolean | false | 是否使用图片上的title属性作为图片标题。 |
| async | Boolean | false | 是否异步加载文件。 |
| preload | Number | 2 | 预加载多少个文件。 |
| animation | 'slideIn' | 'fadeIn' | false | 'slideIn' | 过渡动画的类型。 |
| afterShow | function | null | 显示遮罩层之后的回调函数。 |
| afterHide | function | null | 隐藏遮罩层之后的回调函数。 |
| onChange | function(currentIndex, imagesCount) | null | 图片改变时的回调函数。 |
| overlayBackgroundColor | String | 'rgba(0,0,0,0.8)' | lightbox遮罩层的背景颜色。 |
| filter | RegExp | `/.+.(gif | jpe?g |
方法API
baguetteBox.js插件有4个可用的方法:
run:初始化baguetteBox.js插件。showNext:切换到下一张图片。showPrevious:切换到前一张图片。destroy:销毁插件和绑定的事件。
响应式图片
要使用响应式图片特性,只需要在a标签上设置data-at-{width}属性。其中{width}指的是最大屏幕宽度。例如:
<a href="img/2-1.jpg"
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"这张图片。href属性中指定的图片是为了兼容旧的浏览器二设置的一张通用图片。
baguetteBox.js响应式lightbox插件的github地址为:https://github.com/feimosi/baguetteBox.js