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

官方介绍
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,在源码包内也提供了相应的版本.

类库引用

[html] view plaincopy

  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>

调用代码

[javascript] view plaincopy

  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,则调用代码如下:

[javascript] view plaincopy

  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代码

[html] view plaincopy

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

参数说明

[javascript] view plaincopy

  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内显示,可能非全屏。

自定义函数

[javascript] view plaincopy

  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 手机一次点按,会引起一层关闭后,底上的层依然会触发点击事件的问题,我们的解决方案如下:

[javascript] view plaincopy

    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. });
时间: 2024-10-17 04:09:00

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

PhotoSwipe.js 相册展示插件学习

PhotoSwipe.js官网:http://photoswipe.com/,在这个网站上可以下载到PhotoSwipe的文件以及相关的例子. 这个组件主要是用来展示图片.相册用的,还是很实用的. 一.使用这个组件需要引入两个js文件: 1 <script type="text/javascript" src="simple-inheritance.min.js"> 2 <script type="text/javascript"

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

BigRender 当一个网站越来越庞大,加载速度越来越慢的时候,开发者们不得不对其进行优化,谁愿意访问一个需要等待 10 秒,20 秒才能出现的网页呢? 常见的也是相对简单易行的一个优化方案是 图片的延迟加载.一个庞大的页面,有时我们并不会滚动去看下面的内容,这样就浪费了非首屏部分的渲染,而这些无用的渲染,不仅包括图片,还包括其他的 DOM 元素,甚至一些 js/css(某些js/css 是根据模块请求的,比如一些 ajax),理论上,每增加一个 DOM,都会增加渲染的时间.有没有办法能使得

结合当前公司发展情况,技术团队情况,设计一个适合的技术团队绩效考核机制

结合当前公司发展情况,技术团队情况,设计一个适合的技术团队绩效考核机制 一.引言 要想制定绩效考核机制首先要先知道绩效考核的定义是什么,绩效考核指企业在既定的战略目标下,运用特定的标准和指标,对员工的工作行为及取得的工作业绩进行评估,并运用评估的结果对员工将来的工作行为和工作业绩产生正面引导的过程和方法. 绩效考核(performance evaluation),是企业绩效管理中的一个环节,常见绩效考核方法包括bsc.kpi及360度考核等.绩效考核是一项系统工程.绩效考核是绩效管理过程中的一种

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

原文:js页码生成库,一个适合前后端分离的页码生成器 前言 上星期写的任务里面有需要进行分页的处理,git搜索了一番,没有觉得合适的,于是自己临时写了个分页的算法. 然后等闲下来的时候,决定把分页进行优化并推广.于是乎,一个适合前后端分离的页码生成器就这样出来了. 先别废话了,直接上 git 地址 和 demo 地址.看官果断点击进去瞧瞧看.项目主页的 readme 文档的自动排版将更好. 先讲讲设计思想 整个开发流程围绕事件绑定进行开发. 脱离 callback 回调这种回调方法,直接使用 事

教师课堂教学必备的100个妙招,总有一个适合你!

教师课堂教学必备的100个妙招,总有一个适合你! 转自:郝任工作室 4天前 1 微笑中,拉近师生的心 教师的微笑有着无穷的魅力.教师的微笑能调节课堂情绪,增进师生情谊,激发学生的学习的热情,增强其自信力. 2 了解中,调动学生学习积极性 教师了解了学生,就会体谅学生,就会让学生感受到教师给以的尊重,学生自然也会还以尊重,专心投入到课堂学习中. 3 自然中,课堂教学精彩无痕 最好的课前交流,是教师与学生自然的谈话,并不露痕迹地将学生引入新课的学习中,为精彩教学做准备. 4 亲近中,真情打动学生的心

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

一.关于Workflow-Core 近期工作上有一个工作流的开发需求,自己基于面向对象和职责链模式捣鼓了一套小框架,后来在github上发现一个轻量级的工作流引擎轮子:Workflow-Core,看完其wiki之后决定放弃之前自己造的轮子,使用这个开源项目来改造,也就有了这一篇博文. Workflow-Core是一个基于.NET Standard的轻量级工作流引擎,其GitHub地址为:https://github.com/danielgerlag/workflow-core,目前有超过1200

(转)推荐一个在Linux/Unix上架设ASP.NET的 WEB服务器--Jexus

在Linux/Unix上架设ASP.NET WEB服务器,有两个可选方式,一种是Mono+XSP,一种是Mono+Jexus,其它的方式,比如 Apache+mod_mono.Nginx+FastCgi 等等,其实质与XSP并无区别,都是使用Mono所提供的ASP.NET处理模块:Mono.WebServer名字空间实现对ASP.NET网站的支 持.Jexus不但具有跨平台ASP.NET服务器这样的标志性特征,同时还拥有内核级的安全监控.入侵检测.URL重写.无文件路由等一系列重要功能和 专有特

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

新买了ipad,在ipad上面看见的一个效果,pc上应该也见过,但是还是ipad上面有印象,如果是弹性运动就最好了<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>无标题文档</title> <style type="text/css"> .in{ width:200px; height:24px; backg

一个非常详细测试上传的姿势

[情况]上传点界面: 这个上传点只有一个界面,且上传后会自动删除.成功突破会返回一串秘钥. 上传点抓包界面如下: 上传一个普通图片,返回路径upload/20160226222154_920.jpg 可以看到,整个上传包没有任何多余的参数.除了文件头+本地文件名+图片内容+按钮就没别的东西了. 发现会自动重命名,然后下面就是想办法搞清楚它的上传验证机制,通过以下动作探测. 1.验证允许上传的文件后缀类型.1-1.上传.jpg,成功上传并返回路径.[得知]上传文件被重命名 1-2.上传.gif,成