From 3019306e0037b994ebc7f0d8f27fc1f1f92dbc8f Mon Sep 17 00:00:00 2001 From: saksham1115 Date: Wed, 25 May 2016 22:26:43 +0000 Subject: [PATCH] Lightbox effect for images --- mediagoblin/static/css/lightbox.css | 21 ++++++ mediagoblin/static/js/lightbox.js | 70 +++++++++++++++++++ .../mediagoblin/user_pages/media.html | 6 +- 3 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 mediagoblin/static/css/lightbox.css create mode 100644 mediagoblin/static/js/lightbox.js diff --git a/mediagoblin/static/css/lightbox.css b/mediagoblin/static/css/lightbox.css new file mode 100644 index 00000000..e4fa4c48 --- /dev/null +++ b/mediagoblin/static/css/lightbox.css @@ -0,0 +1,21 @@ +body { + height: 100%; +} +.overlay { + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + opacity: 0; + filter: alpha(opacity=0); + z-index: 50; + cursor: pointer; +} +.box { + position: absolute; + opacity: 0; + filter: alpha(opacity=0); + left: -9999em; + z-index: 51; +} diff --git a/mediagoblin/static/js/lightbox.js b/mediagoblin/static/js/lightbox.js new file mode 100644 index 00000000..8d7bf31f --- /dev/null +++ b/mediagoblin/static/js/lightbox.js @@ -0,0 +1,70 @@ +$(document).ready(function() { + $(".lightbox").click(function() { + overlayLink = $(this).attr("href"); //Getting the link for the media + window.startOverlay(overlayLink); + return false; + }); +}); + +function startOverlay(overlayLink) { + + // Adding elements to the page + $("body") + .append('
') + .css({ + "overflow-y": "hidden" + }); + + // To create the lightbox effect + $(".container").animate({ + "opacity": "0.2" + }, 300, "linear"); + + var imgWidth = $(".box img").width(); + var imgHeight = $(".box img").height(); + + //adding the image to the box + + $(".box").html(''); + //Position + $(".box img").load(function() { + var imgWidth = $(".box img").width(); + var imgHeight = $(".box img").height(); + if (imgHeight > screen.height - 170) imgHeight = screen.height - 170; + if (imgWidth > screen.width - 300) imgWidth = screen.width - 300; + $(".box") + .css({ + "position": "absolute", + "top": "50%", + "left": "50%", + "height": imgHeight + 10, + "width": imgWidth + 10, + "border": "5px solid white", + "margin-top": -(imgHeight / 2), + "margin-left": -(imgWidth / 2) //to position it in the middle + }) + .animate({ + "opacity": "1" + }, 400, "linear"); + + //To remove + window.closeOverlay(); + }); +} + +function closeOverlay() { + // allow users to be able to close the lightbox + $(".overlay").click(function() { + $(".box, .overlay").animate({ + "opacity": "0" + }, 200, "linear", function() { + $(".box, .overlay").remove(); + }); + $(".container").animate({ + "opacity": "1" + }, 200, "linear"); + $("body").css({ + "overflow-y": "scroll" + }); + }); +} diff --git a/mediagoblin/templates/mediagoblin/user_pages/media.html b/mediagoblin/templates/mediagoblin/user_pages/media.html index ed3d1842..f76e0a8f 100644 --- a/mediagoblin/templates/mediagoblin/user_pages/media.html +++ b/mediagoblin/templates/mediagoblin/user_pages/media.html @@ -25,10 +25,14 @@ {% block mediagoblin_head %} + + + {% template_hook("location_head") %} {% template_hook("media_head") %} @@ -57,7 +61,7 @@ #} {% if media.media_files.has_key('medium') %} + media.media_files['original']) }}" class="lightbox">