纯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 相关文章推荐
让新消息在网页标题闪烁提示的jQuery代码
Nov 04 Javascript
jquery动态加载select下拉框示例代码
Dec 10 Javascript
AngularJS实现全选反选功能
Dec 08 Javascript
jQuery遍历DOM元素与节点方法详解
Apr 14 Javascript
JQuery和PHP结合实现动态进度条上传显示
Nov 23 Javascript
javascript 定时器工作原理分析
Dec 03 Javascript
vue子组件使用自定义事件向父组件传递数据
May 27 Javascript
深入理解jquery的$.extend()、$.fn和$.fn.extend()
Jul 08 jQuery
jquery获取元素到屏幕四周可视距离的方法
Sep 05 jQuery
vue中tab选项卡的实现思路
Nov 25 Javascript
js回调函数仿360开机
Dec 26 Javascript
微信小程序如何通过用户授权获取手机号(getPhoneNumber)
Jan 21 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
将OICQ数据转成MYSQL数据
2006/10/09 PHP
php下利用curl判断远程文件是否存在的实现代码
2011/10/08 PHP
php addslashes 利用递归实现使用反斜线引用字符串
2013/08/05 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
PHP开启opcache提升代码性能
2015/04/26 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
又拍云异步上传实例教程详解
2016/04/19 PHP
Laravel手动返回错误码示例
2019/10/22 PHP
简洁短小的 JavaScript IE 浏览器判定代码
2010/03/21 Javascript
jquery选择符快速提取web表单数据示例
2014/03/27 Javascript
jQuery带箭头提示框tooltips插件集锦
2014/11/17 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
ionic2 tabs使用 Modal底部tab弹出框
2016/12/30 Javascript
jquery实现的table排序功能示例
2017/03/10 Javascript
Node.js学习教程之HTTP/2服务器推送【译】
2017/10/31 Javascript
使用proxy实现一个更优雅的vue【推荐】
2018/06/19 Javascript
使用json-server简单完成CRUD模拟后台数据的方法
2018/07/12 Javascript
微信小程序带动画弹窗组件使用方法详解
2018/11/27 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
支付宝小程序实现省市区三级联动
2020/06/21 Javascript
vue-cli —— 如何局部修改Element样式
2020/10/22 Javascript
NodeJS和浏览器中this关键字的不同之处
2021/03/03 NodeJs
[00:10]神之谴戒
2019/03/06 DOTA
Python工程师面试题 与Python Web相关
2016/01/14 Python
用python实现简单EXCEL数据统计的实例
2017/01/24 Python
Pandas标记删除重复记录的方法
2018/04/08 Python
python绘制多个子图的实例
2019/07/07 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
2020/03/08 Python
华为慧通面试题
2012/09/11 面试题
信息管理专业推荐信
2013/10/29 职场文书
超市5.1促销活动
2014/01/15 职场文书
留学推荐信怎么写
2014/01/25 职场文书
公司经理任命书
2014/06/05 职场文书
村长党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
群众路线党员自我评议范文2014
2014/09/24 职场文书
逃出克隆岛观后感
2015/06/09 职场文书