官方介绍
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的更多相关文章

  1. 手机端 图片的移动缩放旋转兼容touch

    //缩放var initialScale = 1;var currentScale = 1;touch.on('#target', 'pinch', function (ev) { currentSc ...

  2. 【极品代码】一般人我不告诉他,手机端h5播放时不自动全屏代码

    已测适用于ios,某些安卓手机微信下播放视频会出现播放器控件(这个实在是无力吐槽噢,因为之前还遇到过微信播放完视频后竟然无法退出全屏出现广告的情况,只有播放完后刷新页面并且要放到框架页里才能屏蔽微信视 ...

  3. 使用localResizeIMG3+WebAPI实现手机端图片上传

    前言 惯例~惯例~昨天发表的使用OWIN作为WebAPI的宿主..嗯..有很多人问..是不是缺少了什么 - - 好吧,如果你要把OWIN寄宿在其他的地方...代码如下: namespace Conso ...

  4. megapix-image插件 使用Canvas压缩图片上传 解决手机端图片上传功能的问题

    最近在弄微信端的公众号.订阅号的相关功能,发现原本网页上用的uploadify图片上传功能到手机端有的手机类型上就不能用了,比如iphone,至于为啥我想应该不用多说了吧(uploadify使用fla ...

  5. 手机端图片预览和缩放js

    转至:http://blog.sina.com.cn/s/blog_c342e3090102vcxu.html 1.手机端的图片选择和预览 <input type="file" ...

  6. 手动实现图片预览-放大缩小全屏支持IE9以上

    #{extends '/Index/index.html' /} #{set title:'意见反馈' /} <script src="/public/mgr/javascripts/ ...

  7. [办公应用]word 2007:全屏快捷键,让复制图片保持原样大小(office 全屏快捷键)

    最近同事咨询这两个问题: 1.word 2007内是否有全屏显示的快捷键,这样投影时,就可以快速切换到全屏. 2.从ppt或者excel复制一张较大的图片,word 2007 会默认让复制的图片缩小, ...

  8. tinymce插件preview改造增加全屏按钮

    近期需要用到tinymce的preview插件,但preview出来的界面太小了,通过投影仪出来看的不清晰,于是想在preview的预览界面中增加全屏.放大和缩小的按钮,改造内容如下: 由于previ ...

  9. 手机端iscoll插件的使用方法

    除了以前版本的iScroll的特性以外,iScroll 4还包括如下的特性: (1)缩放(Pinch/Zoom) (2)拉动刷新(Pull up/down to refresh) (3)速度和性能提升 ...

随机推荐

  1. UGUI 代码 动态添加 Event Trigger 的事件

    Additionally, if you need more than just the events provided by default, I'd suggest instead attachi ...

  2. Java FTP下载文件以及编码问题小结

    问题 之前在开发过程中,遇到了一点问题,我要访问一个FTP服务器去下载文件详细情况如下: 1. 需要传入一个可能为中文的文件名: 2. 通过文件名去FTP上寻找该文件: 3. FTP服务器的命名编码为 ...

  3. java获取本机器的IP(linux和windows)

    目录 描述 方案描述 获取Windows下的IP 获取linux下的IP 判断操作系统的类型 最后将上面三个方法进行整合 参考 描述 由于项目是部署在集群上的,需要项目能够自动采集各机器的信息.jav ...

  4. Java集合整体框架

    Java中的集合类有List.Set.Map Collection的实现类:List.Set List的实现类:ArrayList.LinkedList.Vector Set的实现类:HashSet. ...

  5. CSS继承—深入剖析

    CSS的继承是指被包在内部的标签将拥有外部标签的样式性质.继承特性最典型的应用通常发挥在整个网页的样式预设,即整体布局声明.而需要要指定为其它样式的部份设定在个别元素里即可达到效果.这项特性可以给网页 ...

  6. FFT多项式乘法模板

    有时间来补算法原理orz #include <iostream> #include <cstdio> #include <cmath> #include <c ...

  7. [Leetcode] Merge two sorted lists 合并两已排序的链表

    Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...

  8. POJ3261 Milk Patterns 【后缀数组】

    牛奶模式 时间限制: 5000MS   内存限制: 65536K 提交总数: 16796   接受: 7422 案件时间限制: 2000MS 描述 农夫约翰已经注意到,他的牛奶的质量每天都在变化.经进 ...

  9. 原生ajax方法封装

    /** * @function ajax request * @fields ajaxName:请求名称,method:请求方法,headers:setRequestHeader自定义部分,url:接 ...

  10. maven pom继承与聚合

    一.POM聚合模块: 在分布式架构,分模块化开发中,每个某块可能都是一个单独的maven项目,能够独立的进行项目构架,当模块比较多时,可以使用maven聚合聚合项目来简化maven构建,一次构建多个项 ...