gettingdata
事件)在前端对其进行分析。web API
(FaceBook,500px,Instagram,Flickr,Twitter,YouTube,Vimeo etc)返回图片的尺寸尺寸(大小)用于逐步加载,占位符,最初的放大过渡,平移,缩放,标题定位。 讨论在GitHubissue#741
msrc
属性,启用不透明过渡选项showHideOpacity:true,getThumbBoundsFn:false
showHideOpacity:true
,并确保getThumbBoundsFn
属性返回缩略图区域的坐标。我强烈推荐去展示与大图片比率相匹配的缩略图。或者通过css进行区域裁剪。
为什么还没有解决这个问题,这里有两种方法可以扩大动画区域。
clip
属性。但它每次都强制重绘,这使得动画极度不平稳。overflow:hidden
的div来包裹展开的图像。在动画期间,通过transform:translate
重新定位它们,以便其裁剪部分正确。此方法不强制绘制或布局,但在每个幻灯片的标记中需要另外的元素。测试原型表明,它只在高端移动设备(Nexus5和Chrome)上运行流畅。也许有一天我会实现它。请看 issue#657
注意,这是一个实验性的特性,现在它不允许在移动的画廊上垂直滚动页面(因为它在touch
事件中会调用prevetDefault())。实现嵌入式和文档流的画廊,遵循这些步骤:
.pswp
模板放入在一个有position
定位的父元素。modal:false,closeOnScroll:false
选项。getThumbBoundsFn
(如果你使用它)减去模板父母的边界矩形(作者应该是指margin
)。PhotoSwipe
。updateScrollOffset
事件并添加模板的边界矩形偏移量。PhotoSwipe
<div style="position: relative;" class="parent">
<div id="gallery" class="pswp"> ... </div>
</div>
var items = [...];
var template = document.getElementById("gallery"); // .pswp
var options = {
...,
modal: false,
closeOnScroll: false,
getThumbBoundsFn: function(index) {
// rect was the original bounds
var rect = {x: ..., y: ..., w: ...},
var templateBounds = template.parentElement.getBoundingClientRect();
rect.x -= templateBounds.left;
rect.y -= templateBounds.top;
return rect;
}
};
var photoSwipe = new PhotoSwipe(template, PhotoSwipeUI_Default, items, options);
photoSwipe.listen('updateScrollOffset', function(_offset) {
var r = template.getBoundingClientRect();
_offset.x += r.left;
_offset.y += r.top;
});
photoSwipe.init();
每个图像的URL:
http://example.com/#&gid=1&pid=custom-first-id
http://example.com/#&gid=1&pid=custom-second-id
被替换之前的URL:
http://example.com/#&gid=1&pid=1
http://example.com/#&gid=1&pid=2
启用history:true,galleryPids:true
选项并添加pid
(图片的唯一标识)属性到每一个图库项。
pid
可以是整数或字符串,例如:
var slides = [
{
src: 'path/to/1.jpg',
w:500,
h:400,
pid: 'custom-first-id'
},
{
src: 'path/to/2.jpg',
w:300,
h:700,
pid: 'custom-second-id'
},
...
];
photoswipeParseHash
)galleryPids
选项不可用。gif
图片在IOS8会被卡住IOS Safari
有一个bug,禁止gif
图片被移动到窗口之外(或带有overflow:hidden
属性的元素之外)。我的建议是:在PhotoSwipe中应该避免使用gif
动图。因为在一些移动浏览器里,它会降低动画性能。但是如果你真的需要使用它,也不是不可,这里有hack技术
大多数情况下,发生在低内存限制的移动设备(IOS Safari
和在比较老的安卓上,默认浏览器)上。崩溃常规原因是有太多大图片(通常大于2000*1500px),PhotoSwipe在图片上启用硬件加速,这比使用正常尺寸的图片将消耗更多的内存。因此当你运行在底限制的浏览器上时,动画为延迟甚至崩溃。
因此,提供响应式图片或者不使用大尺寸图片。理想情况下,在900*600像素的手机上,你应该提供1200px宽的图像。注意,如果这在IOS模拟器上运行流畅,并不意味着,在真实的设备上不会崩溃。
在更罕见的情况下,如果在页面上的某个进程(可以是初始页面加载/呈现,或页面上的某些复杂动画)中打开Photosweep,则会发生崩溃,请尝试延迟Photosweep初始化(初始化),直到呈现页面为止(文档准备就绪后18-300毫秒),特别是在显示大型图像时。
每次PhotoSwipe更新,在GitHub releases页面有更新详情。Releases
页面有一个Atom提要,你可以在使用IFTTT更新提要时,设置电子邮件通知。
另外,你可以加入我的电子邮件通讯(每年3到4次发送),
在推特关注PhotoSwipe和在GitHub上star
和watch
PhotoSwipe.
WordPress
,Magento
或joomla
等模板上使用PhotoSwipe
吗?你可以自由的使用PhotoSwipe,没有任何限制。如果可以,请给我留给友链。