纯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实现随机返回数组的一个元素
Aug 13 Javascript
基于jquery的让textarea自适应高度的插件
Aug 03 Javascript
jQuery学习笔记 更改jQuery对象
Sep 19 Javascript
document.createElement()用法及注意事项(ff下不兼容)
Mar 13 Javascript
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
Jun 17 Javascript
jquery动态增加text元素以及删除文本内容实例代码
Jul 01 Javascript
JavaScript作用域链使用介绍
Aug 29 Javascript
js操作table示例(个人心得)
Nov 29 Javascript
js动态生成Html元素实现Post操作(createElement)
Sep 14 Javascript
layui中使用jquery控制radio选中事件的示例代码
Aug 15 jQuery
JS数组实现分类统计实例代码
Sep 30 Javascript
vue-router的hooks用法详解
Jun 08 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写的采集程序
2007/03/16 PHP
PHP获取用户的浏览器与操作系统信息的代码
2012/09/04 PHP
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
2014/05/10 PHP
php利用cookie实现自动登录的方法
2014/12/10 PHP
PHP读取mssql json数据中文乱码的解决办法
2016/04/11 PHP
php制作基于xml的RSS订阅源功能示例
2017/02/08 PHP
用Javascript实现锚点(Anchor)间平滑跳转
2009/09/08 Javascript
Javascript页面添加到收藏夹的简单方法
2013/08/07 Javascript
Jquery AJAX POST与GET之间的区别
2013/11/14 Javascript
jQuery横向擦除焦点图特效代码分享
2015/09/06 Javascript
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
JavaScript中用let语句声明作用域的用法讲解
2016/05/20 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
2016/09/03 Javascript
JavaScript数组去重的几种方法效率测试
2016/10/23 Javascript
js实现可输入可选择的select下拉框
2016/12/21 Javascript
jQuery实现动态添加、删除按钮及input输入框的方法
2017/04/27 jQuery
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
vue.js实现的经典计算器/科学计算器功能示例
2018/07/11 Javascript
详解JavaScript事件循环机制
2018/09/07 Javascript
js删除数组中某几项的方法总结
2019/01/16 Javascript
Python中获取对象信息的方法
2015/04/27 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
2015/10/13 Python
python之Character string(实例讲解)
2017/09/25 Python
解决python3中自定义wsgi函数,make_server函数报错的问题
2017/11/21 Python
对web.py设置favicon.ico的方法详解
2018/12/04 Python
python实现ip地址查询经纬度定位详解
2019/08/30 Python
Python二元赋值实用技巧解析
2019/10/25 Python
Python爬虫爬取、解析数据操作示例
2020/03/27 Python
Myprotein中国网站:欧洲畅销运动营养品牌
2021/02/11 全球购物
老师给学生的表扬信
2014/01/17 职场文书
应届本科毕业生求职信
2014/07/23 职场文书
个人安全生产责任书
2014/07/28 职场文书
幼儿教师师德师风演讲稿
2014/08/22 职场文书
一般基层干部群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
优秀共产党员推荐材料
2014/12/18 职场文书
少儿励志名言(80句)
2019/08/14 职场文书