官方介绍
PhotoSwipe 是专为移动触摸设备设计的相册/画廊.兼容所有iPhone、iPad、黑莓6+,以及桌面浏览器.底层实现基于HTML/CSS/JavaScript,是一款免费开源的相册产品。

为谁而用
让移动站点的相册体验和原生App一样的设计师和开发者。

绝佳特性
PhotoSwipe提供给用户一个熟悉又直观的相册交互界面。

官方网站
http://www.photoswipe.com/

源码示例
http://github.com/downloads/codecomputerlove/PhotoSwipe/code.photoswipe-3.0.5.zip

Github
https://github.com/codecomputerlove/PhotoSwipe

在线demo
http://www.photoswipe.com/latest/examples/04-jquery-mobile.html

兼容特性
PhotoSwipe兼容大量的移动设备以及所有流行的JavaScript类库/开发框架. 既有基于jQuery的版本,也有不依赖jQuery的版本,还有兼容jQuery Mobile的版本。当然,All In One,全在源码示例包里。

如何使用
PhotoSwipe是一个自身独立的JavaScript库,可以很方便地集成进你的网站。针对移动浏览器(webkit)进行了大量的优化,当然,对于桌面浏览器,以及jQueryMobile,在源码包内也提供了相应的版本.

类库引用

  1. <!-- photoswipe 之前先引用klass,如果需要提高加载速度,可以给 script 加上 defer 标记/属性-->
  2. <script type="text/javascript" src="klass.min.js"></script>
  3. <!-- 重要提示,如果不使用jQuery版本,在IE下面会出错,当然,使用jQuery版本,则需要引入jQuery-->
  4. <script type="text/javascript" src="code.photoswipe-3.0.5.min.js"></script>

调用代码

  1. /* 添加DOMContentLoaded 事件监听,类似于jQuery的 ready函数.
  2. 默认方式 examples/01-default.html
  3. 无缩略图模式请查看.examples/09-exclusive-mode-no-thumbnails.html
  4. */
  5. // PhotoSwipe.attach 方法接收3个参数(HTML元素集合,可选配置信息,可选多实例时string类型的ID)
  6. document.addEventListener('DOMContentLoaded', function(){
  7. //设置 PhotoSwipe绑定为 id为Gallery的容器下的所有<a>标签.点击就会激活
  8. // 此处的对象,就是PhotoSwipe实例,可以使用相应的方法,例如 show(0),hide()等.
  9. var myPhotoSwipe = Code.PhotoSwipe.attach( window.document.querySelectorAll('#Gallery a'), { enableMouseWheel: false , enableKeyboard: false } );
  10. }, false);

如果使用jQuery,则调用代码如下:

  1. //jQuery 版,对应的js文件也需要变化
  2. // 示例详见examples/02-jquery.html
  3. $(document).ready(function(){
  4. // 此处的对象,就是PhotoSwipe实例,可以使用相应的方法,例如 show(0),hide()等.
  5. var myPhotoSwipe = $("#Gallery a").photoSwipe({ enableMouseWheel: false , enableKeyboard: false });
  6. });

HTML代码

  1. <!-- ul li 之类是用于显示缩略图的,也可以根据需要调整.<a>下面的<img> 元素,即为缩略图,如果不需要,则src设置为空即可 -->
  2. <ul id="Gallery">
  3. <li><a href="images/full/01.jpg"><img src="data:images/thumb/01.jpg" alt="Image 01" /></a></li>
  4. <li><a href="images/full/02.jpg"><img src="data:images/thumb/02.jpg" alt="Image 02" /></a></li>
  5. <li><a href="images/full/03.jpg"><img src="data:images/thumb/03.jpg" alt="Image 03" /></a></li>
  6. <li><a href="images/full/04.jpg"><img src="data:images/thumb/04.jpg" alt="Image 04" /></a></li>
  7. <li><a href="images/full/05.jpg"><img src="data:images/thumb/05.jpg" alt="Image 05" /></a></li>
  8. <li><a href="images/full/06.jpg"><img src="data:images/thumb/06.jpg" alt="Image 06" /></a></li>
  9. </ul>

参数说明

  1. allowUserZoom: 允许用户双击放大/移动方式查看图片. 默认值 = true
  2. autoStartSlideshow: 当PhotoSwipe激活后,自动播放幻灯片. 默认值 = false
  3. allowRotationOnUserZoom: 只有 iOS 支持 - 允许用户在缩放/平移模式下 用手势旋转图像. 默认值  = false
  4. backButtonHideEnabled: 按返回键隐藏相册幻灯片. 主要是 Android 和 Blackberry使用. 支持 BB6, Android v2.1, iOS 4 以及更新版本. 默认值 = true
  5. captionAndToolbarAutoHideDelay: 标题栏和工具栏自动隐藏的延迟时间. 默认值为 = 5000(毫秒). 如果设为 0 则不会自动隐藏(tap/单击切换显隐)
  6. captionAndToolbarFlipPosition: 标题栏和工具栏切换位置(让 caption显示在底部而 toolbar显示在顶部). 默认值 = false
  7. captionAndToolbarHide: 隐藏 标题栏和工具栏. 默认值  = false
  8. captionAndToolbarOpacity: 标题栏和工具栏 的透明度(0-1). 默认值  = 0.8
  9. captionAndToolbarShowEmptyCaptions: 即使当前图片的标题是空,也显示标题栏. 默认值 = true
  10. cacheMode: 缓存模式,Code.PhotoSwipe.Cache.Mode.normal (默认,正常) 或者 Code.PhotoSwipe.Cache.Mode.aggressive(激进,积极). 决定 PhotoSwipe 如何管理图片缓存 cache.
  11. Aggressive 模式将会积极地地设置非 "当前,上一张,下一张"的图片为空的类型. 对于老版本iOS 浏览器下的大图片内存溢出将会很有用. 大多数情况下,normal模式就可以了。
  12. doubleTapSpeed: 双击的最大间隔. 默认值 = 300(毫秒)
  13. doubleTapZoomLevel: 当用户双击的时候,放大的倍数, 默认的 "zoom-in"(拉近) 级别. 默认值 = 2.5
  14. enableDrag: 允许拖动上一张/下一张图片到当前界面. 默认值 = true
  15. enableKeyboard: 允许键盘操作(左右箭头切换,Esc退出,Enter自动播放,空格键 显/隐标题栏/退出). 默认 = true
  16. enableMouseWheel: 允许鼠标滚轮操作. 默认 = true
  17. fadeInSpeed: 淡入效果元素的速度(持续时间),毫秒. 默认 = 250
  18. fadeOutSpeed: 淡出效果元素的速度(持续时间),毫秒. 默认 = 250
  19. imageScaleMethod: 图片缩放方法(模式). 可选值: "fit", "fitNoUpscale" 和 "zoom". 模式"fit" 保证图像适应屏幕. "fitNoUpscale" 和 "fit"类似但是不会放大图片. "zoom"将图片全屏, 但有可能图片缩放不是等比例的. 默认 = "fit"
  20. invertMouseWheel: 反转鼠标滚轮。默认情况下,鼠标向下滚动将切换到下一张,向上切换到上一张 . 默认 = false
  21. jQueryMobile: 指示 PhotoSwipe 是否集成进了 jQuery Mobile 项目. 默认情况下, PhotoSwipe will try and work this out for you
  22. jQueryMobileDialogHash: jQuery Mobile的window,dialog页面 所使用的hash标签。 默认值 = "&ui-state=dialog"
  23. loop: 相册是否自动循环. 默认 = true
  24. margin: 两张图之间的间隔,单位是像素. 默认 = 20
  25. maxUserZoom: 最大放大倍数. 默认 = 5.0 (设置为0将被忽略)
  26. minUserZoom: 图像最小的缩小倍数. 默认 = 0.5 (设置为0将会忽略)
  27. mouseWheelSpeed: 响应鼠标滚轮的灵敏度. 默认 = 500(毫秒)
  28. nextPreviousSlideSpeed: 当点击上一张,下一张按钮后,延迟多少毫秒执行切换. 默认 = 0 (立即切换)
  29. preventHide: 阻止用户关闭 PhotoSwipe. 同时也会隐藏 工具栏上的"close"关闭按钮. 在独享的页面使用 (示例是源码中的 examples/08-exclusive-mode.html). 默认 = false
  30. preventSlideshow: 阻止自动播放模式. 同时也会隐藏工具栏里的播放按钮. 默认 = false
  31. slideshowDelay: 自动播放模式下,多长时间播放下一张. Default = 3000(毫秒)
  32. slideSpeed: 图片滑进视图的时间. 默认 = 250(毫秒)
  33. swipeThreshold: 手指滑动多少像素才触发一个  swipe 手势事件. 默认 = 50
  34. swipeTimeThreshold: 定义触发swipe(滑动)手势的最大毫秒数,太慢了则不会触发滑动,只会拖动当前照片的位置. 默认 = 250
  35. slideTimingFunction: 滑动时的 Easing function . 默认 = "ease-out"
  36. zIndex: 初始的zIndex值. 默认 = 1000
  37. enableUIWebViewRepositionTimeout: 检查设备的方向是否改变。默认 = false
  38. uiWebViewResetPositionDelay: 定时检查设备的方向是否改变的时间 默认 = 500(毫秒)
  39. preventDefaultTouchEvents: 阻止默认的touch事件,比如页面滚动。 默认 = true
  40. target: 必须是一个合法的DOM元素(如DIV)。默认是window(全页面)。而如果是某个低级别的DOM,则在DOM内显示,可能非全屏。

自定义函数

  1. getToolbar: function(){
  2. /*返回 要在Toolbar之中显示的HTML字符串*/
  3. },
  4. getImageSource: function(el){
  5. /* 告诉 gallery如何获取图片的src,
  6. 默认情况下,gallery假设你使用<a>标签包装了<img>缩略图,而<a>标签的href属性即为完整图片的URL。
  7. 此时可以使用本方法来返回对应元素的图片的路径。可以是各种各样的。比如rel属性什么的。有jQuery那就更简单了。
  8. */
  9. return el.getAttribute('rel');
  10. },
  11. getImageCaption: function(el){
  12. /**
  13. 如同 getImageSource 方法一样,此方法返回图片的标题,默认情况下gallery查找图片的alt 属性。
  14. */
  15. },
  16. getImageMetaData: function(el){
  17. /**
  18. 如果你监听了 onDisplayImage,那么你可以通过此函数获取额外的元信息.并在 onDisplayImage中使用
  19. */
  20. return {
  21. longDescription: el.getAttribute(el, 'data-long-description')
  22. }
  23. }

针对android 手机一次点按,会引起一层关闭后,底上的层依然会触发点击事件的问题,我们的解决方案如下:

    1. // 在android 手机上多个层次触发点击,我们采用的是用定时器进行拦截
    2. var event_timeout = 500;// 预防多次事件触发
    3. // 阻止短时间内连续事件
    4. var multiClickPrevent = false;
    5. function preventMultiClick(){
    6. if(multiClickPrevent){
    7. return false;
    8. }
    9. multiClickPrevent = true;
    10. window.setTimeout(function(){
    11. multiClickPrevent = false;
    12. },event_timeout);
    13. return true;
    14. };
    15. // 适配浏览器
    16. var useragent = navigator.userAgent;
    17. var likeIOS = useragent.match(/iPad|iPhone|iPod/i);
    18. var likeAndroid = useragent.match(/android/i);
    19. var specialClick = "click";
    20. if(likeIOS){
    21. specialClick = "touchstart click";
    22. } else if(likeAndroid){
    23. specialClick = "touchstart click";
    24. }
    25. / 示例
    26. $(".t_right").live(specialClick,function(){
    27. if(preventMultiClick()){
    28. // 执行其他操作
    29. } else {
    30. // else 就是拒绝操作啦,可以直接返回 false 之类的
    31. return false;
    32. }
    33. });
    34. // 示例
    35. $("body").live(specialClick,function(){
    36. if(preventMultiClick()){
    37. // 执行其他操作
    38. }
    39. });

PhotoSwipe简介(PhotoSwipe是一个适合在触摸屏手机上使用的相册展示包)的更多相关文章

  1. PhotoSwipe.js 相册展示插件学习

    PhotoSwipe.js官网:http://photoswipe.com/,在这个网站上可以下载到PhotoSwipe的文件以及相关的例子. 这个组件主要是用来展示图片.相册用的,还是很实用的. 一 ...

  2. 大流量网站性能优化:一步一步打造一个适合自己的BigRender插件

    BigRender 当一个网站越来越庞大,加载速度越来越慢的时候,开发者们不得不对其进行优化,谁愿意访问一个需要等待 10 秒,20 秒才能出现的网页呢? 常见的也是相对简单易行的一个优化方案是 图片 ...

  3. js页码生成库,一个适合前后端分离的页码生成器

    原文:js页码生成库,一个适合前后端分离的页码生成器 前言 上星期写的任务里面有需要进行分页的处理,git搜索了一番,没有觉得合适的,于是自己临时写了个分页的算法. 然后等闲下来的时候,决定把分页进行 ...

  4. 一个适合于.NET Core的超轻量级工作流引擎:Workflow-Core

    一.关于Workflow-Core 近期工作上有一个工作流的开发需求,自己基于面向对象和职责链模式捣鼓了一套小框架,后来在github上发现一个轻量级的工作流引擎轮子:Workflow-Core,看完 ...

  5. 【原创】Airflow 简介&如何部署一个健壮的 apache-airflow 调度系统

    声明 本文摘录了很多前辈的文章,原文如下: https://www.jianshu.com/p/2ecef979c606 Airflow 简介 Airflow是一个可编程,调度和监控的工作流平台,基于 ...

  6. 使用element的upload组件实现一个完整的文件上传功能(上)

    说到标题就有点心塞了,前段时间项目上需要实现一个文件上传的功能,然后就咔咔的去用了element的upload组件,不用不知道一用吓一跳哇. 在使用的过程中遇到了很多让意想不到的问题,后来也因为时间问 ...

  7. dropzonejs中文翻译手册 DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库.

    http://wxb.github.io/dropzonejs.com.zh-CN/dropzonezh-CN/ 由于项目需要,完成一个web的图片拖拽上传,也就顺便学习和了解了一下前端的比较新的技术 ...

  8. 新买了ipad,在ipad上面看见的一个效果,pc上应该也见过,但是还是ipad上面有印象,如果是弹性运动就最好了

    新买了ipad,在ipad上面看见的一个效果,pc上应该也见过,但是还是ipad上面有印象,如果是弹性运动就最好了 <!DOCTYPE html> <html> <hea ...

  9. 一个伪ajax图片上传代码的例子

    一个伪ajax图片上传实现代码. 复制代码代码如下: <?php  if($_FILES){  ?>  <script>  window.parent.ajaxUploadPi ...

随机推荐

  1. SAP存货账龄分析之库存获取

    前段时间上面要求做一个历史库存账龄分析,取历史数据的时候一直纠结于用mchb/mchbh/mska/mskah等实时和历史库存表,然而试来试去还是不能成功,于是决定DEBUG下MB5B的源代码,测试了 ...

  2. mac实现jni的demo

    今天在看ArrayList 源码时看到了System.arraycopy 这个方法,但是这个方法没有java实现. 后面一通查询查找,才知道 如下图 native是一个java调用c语言来实现的操作的 ...

  3. 【风马一族_C】进制转化

    #include "stdio.h" #include "Math.h" #define number 50 //设置数组的长度 int num10; //十进 ...

  4. 我的总结SVN的使用

    SVN平时在用时,一般要做到早上一次更新,中间每做出一个模块就要提交,就是一次更新,多次提交, SVN在修改公共类,配置文件时一定要注意,如果修改的是配置文件中的东西,这样修改完之后一定要提交, 如果 ...

  5. mysql基本知识---20151127-1

    2015年11月27日,作为PHPer的我开始全面学习mysql数据库. 基本语法: 1.连接服务器: mysql>mysql -h host -u root -p 回车 输入密码(本地环境可以 ...

  6. SQL Server 数据库身份认证以及包含数据库

    首先分为SQL Server 认证与Windows 身份认证. SQL Server 认证可以运行以下语句来查询 select * from sys.sql_logins 管理员可以直接修改密码,但无 ...

  7. ASP.NET从数据库中取出数据,有数据的复选框为选中

    在KS系统中在更新菜单的时候,当查出菜单的时候要查出菜单下面已经有了哪些界面了我用了一下的方法弄的.代码如下: 界面代码: <%@ Page Language="C#" Au ...

  8. 【转载】mysql 四种隔离级别分析

    sql标准中,有四种隔离级别,各个离级别都有各自的规则,隔离级别越低,允许并发越大,消耗的资源越少,但是越不安全,下面就mysql数据库来分别介绍一下(每个存储引擎实施的隔离级别会有稍微的不同)mys ...

  9. How to use Android Activity's finish(), onDestory() and System.exit(0) methods

    Activity.finish() Calling this method will let the system know that the programmer wants the current ...

  10. 在云服务器搭建WordPress博客(二)使用xampp并解决端口冲突问题

    要搭建一台外界可以访问的服务器,就必须有对应的服务器环境.在这里我用的xampp集成环境(我是菜鸟级......),xampp集成了PHP+Apache+MySQL+perl,安装方便,不用再特意去设 ...