一:getting started
开始之前要知道:
1、 PhotoSwipe需要提前预定义图片的大小(more: http://photoswipe.com/documentation/faq.html#image-size)
2、 如果您把PhotoSwipe用在非响应式的站点上,但是这个控件也会在移动端进行缩放(因为这整个页面就是缩放的)。所以你需要实现自定义控件(例如单大关闭按钮在右上角)。
3、 文档中的所有代码都是纯JS,支持IE 8和以上。如果你的网站或应用程序使用一些JavaScript框架(如jQuery和MooTools)或你不需要支持旧的浏览器——随意简化代码。
4、 避免使用大图片(大于2000 x1500px)于移动端上,因为他们将大大减少动画表现并且可能导致事故(特别是在iOS Safari)。可能的解决方案: http://photoswipe.com/documentation/responsive-images.html,或打开图像在一个单独的页面,或使用库,支持图像镶嵌 (比如http://leafletjs.com/)(more:http://photoswipe.com/documentation/faq.html#mobile-crash)。
安装:
第一步:引入js css
<!-- Core CSS file -->
<link rel="stylesheet" href="path/to/photoswipe.css">
<!-- Skin CSS file (styling of UI - buttons, caption, etc.)
In the folder of skin CSS file there are also:
- .png and .svg icons sprite,
- preloader.gif (for browsers that do not support CSS animations) -->
<link rel="stylesheet" href="path/to/default-skin/default-skin.css">
<!-- Core JS file -->
<script src="path/to/photoswipe.min.js"></script>
<!-- UI JS file -->
<script src="path/to/photoswipe-ui-default.min.js"></script>
无论您将在哪里以及在哪里引用JS和CSS文件都无关紧要。只有当你写new PhotoSwipe()的时候代码才会执行。因此,如果你不需要在一开始就打开文件的话,就可以延迟加载文件。
第二步:向DOM添加PhotoSwipe (.pswp)元素
您可以直接在初始化之前通过JS动态地添加HTML代码,或在页面最初的时候(例如演示页面上那样)。这段代码可以在任何地方附加,但最好在</body>标签关闭之前。您可以在多个库中重用它(只要使用相同的UI类)。
<!-- Root element of PhotoSwipe. Must have class pswp. -->
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
<!-- Background of PhotoSwipe.
It's a separate element as animating opacity is faster than rgba(). -->
<div class="pswp__bg"></div>
<!-- Slides wrapper with overflow:hidden. -->
<div class="pswp__scroll-wrap">
<!-- Container that holds slides.
PhotoSwipe keeps only 3 of them in the DOM to save memory.
Don't modify these 3 pswp__item elements, data is added later on. -->
<div class="pswp__container">
<div class="pswp__item"></div>
<div class="pswp__item"></div>
<div class="pswp__item"></div>
</div>
<!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
<div class="pswp__ui pswp__ui--hidden">
<div class="pswp__top-bar">
<!-- Controls are self-explanatory. Order can be changed. -->
<div class="pswp__counter"></div>
<button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
<button class="pswp__button pswp__button--share" title="Share"></button>
<button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
<button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
<!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->
<!-- element will get class pswp__preloader--active when preloader is running -->
<div class="pswp__preloader">
<div class="pswp__preloader__icn">
<div class="pswp__preloader__cut">
<div class="pswp__preloader__donut"></div>
</div>
</div>
</div>
</div>
<div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
<div class="pswp__share-tooltip"></div>
</div>
<button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
</button>
<button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
</button>
<div class="pswp__caption">
<div class="pswp__caption__center"></div>
</div>
</div>
</div>
</div>
注意: pswp__bg, pswp__scroll-wrap, pswp__container 和 pswp__item elements 的顺序不能变。
你可能会问,为什么PhotoSwipe没有通过JS自动添加这段代码,原因很简单——只是为了保存文件大小,以防你需要修改布局。
第三步:初始化
执行PhotoSwipe构造函数,它包含4个参数
.pswp element from step 2 (it must be added to DOM).
PhotoSwipe UI class. If you included default photoswipe-ui-default.js, class will be PhotoSwipeUI_Default. Can be false.
Array with objects (slides).
Options.
1、.pswp -----第二步中所指的元素(它必须被添加到DOM中):
2、PhotoSwipe UI类 ------如果你引入了默认的photoswipe-ui-default.js, class会是PhotoSwipeUI_Default(这句没翻译通顺)
3、需要滑动的数组(slides)
4、配置项
var pswpElement = document.querySelectorAll('.pswp')[0];
// build items array
var items = [
{
src: 'https://placekitten.com/600/400',
w: 600,
h: 400
},
{
src: 'https://placekitten.com/1200/900',
w: 1200,
h: 900
}
];
// define options (if needed)
var options = {
// optionName: 'option value'
// for example:
index: 0 // start at first slide
};
// Initializes and opens PhotoSwipe
var gallery = new PhotoSwipe( pswpElement, PhotoSwipeUI_Default, items, options);
gallery.init();
写完以上这些,则可以得到以下结果