PhotoSwipe support

This commit is contained in:
Michael Romero 2017-03-20 21:45:55 -07:00
commit aae34f128c
11 changed files with 278 additions and 1 deletions

103
static/css/pswp-gallery.css Normal file
View file

@ -0,0 +1,103 @@
#rig {
max-width:900px;
margin:0 auto; /*center aligned*/
padding:0;
font-size:0; /* Remember to change it back to normal font size if have captions */
list-style:none;
}
#rig figure {
display: inline-block;
*display:inline;/*for IE6 - IE7*/
width:25%;
vertical-align:middle;
box-sizing:border-box;
margin:0;
padding:0;
}
/* The wrapper for each item */
.rig-cell {
margin:0 12px 12px 0;
box-shadow:0 0 6px rgba(0,0,0,0.3);
display:block;
position: relative;
overflow:hidden;
}
/* If have the image layer */
.rig-img {
display:block;
width: 100%;
height: auto;
border:none;
transform:scale(1);
transition:all 1s;
}
#rig figure:hover .rig-img {
transform:scale(1.05);
}
/* If have the overlay layer */
.rig-overlay {
position: absolute;
display:block;
top: 0;
left: 0;
bottom: 0;
right: 0;
margin: auto;
background: #3DC0F1;
background-size:50px 50px;
opacity:0;
filter:alpha(opacity=0);/*For IE6 - IE8*/
transition:all 0.6s;
}
#rig figure:hover .rig-overlay {
opacity:0.8;
}
/* If have captions */
.rig-text {
display:block;
padding:0 30px;
box-sizing:border-box;
position:absolute;
left:0;
width:100%;
text-align:center;
text-transform:capitalize;
font-size:18px;
font-weight:bold;
font-family: 'Oswald', sans-serif;
font-weight:normal!important;
top:40%;
color:white;
opacity:0;
filter:alpha(opacity=0);/*For older IE*/
transform:translateY(-20px);
transition:all .3s;
}
#rig figure:hover .rig-text {
transform:translateY(0px);
opacity:0.9;
}
@media (max-width: 9000px) {
#rig figure {
width:25%;
}
}
@media (max-width: 700px) {
#rig figure {
width:33.33%;
}
}
@media (max-width: 550px) {
#rig figure {
width:50%;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
static/img/sphere-thumb.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

64
static/js/pswp-init.js Normal file
View file

@ -0,0 +1,64 @@
/*
Put this file in /static/js/pswp-init.js
*/
$( document ).ready(function() {
var items = []; // array of slide objects that will be passed to PhotoSwipe()
// for every figure element on the page:
$('figure').each( function() {
if ($(this).attr('class') == 'pswp-ignore') return true; // ignore any figures where class="pswp-ignore"
// get properties from child a/img/figcaption elements,
var $figure = $(this),
$a = $figure.find('a'),
$src = $a.attr('href'),
$title = $figure.find('figcaption').html(),
$msrc = $figure.find('img').attr('src');
// if data-size on <a> tag is set, read it and create an item
if ($a.data('size')) {
var $size = $a.data('size').split('x');
var item = {
src : $src,
w : $size[0],
h : $size[1],
title : $title,
msrc : $msrc
};
// if not, set temp default size then load the image to check actual size
} else {
var item = {
src : $src,
w : 800, // temp default size
h : 600, // temp default size
title : $title,
msrc : $msrc
};
// load the image to check its dimensions
// update the item as soon as w and h are known (check every 30ms)
var img = new Image();
img.src = $src;
var wait = setInterval(function() {
var w = img.naturalWidth,
h = img.naturalHeight;
if (w && h) {
clearInterval(wait);
item.w = w;
item.h = h;
}
}, 30);
}
// Save the index of this image then add it to the array
var index = items.length;
items.push(item);
// Event handler for click on a figure
$figure.on('click', function(event) {
event.preventDefault(); // prevent the normal behaviour i.e. load the <a> hyperlink
// Get the PSWP element and initialise it with the desired options
var $pswp = $('.pswp')[0];
var options = {
index: index,
bgOpacity: 0.8,
showHideOpacity: true
}
new PhotoSwipe($pswp, PhotoSwipeUI_Default, items, options).init();
});
});
});