Lightbox effect for images
authorsaksham1115 <saksham115@gmail.com>
Wed, 25 May 2016 22:26:43 +0000 (22:26 +0000)
committersaksham1115 <saksham115@gmail.com>
Tue, 19 Jul 2016 17:28:40 +0000 (17:28 +0000)
mediagoblin/static/css/lightbox.css [new file with mode: 0644]
mediagoblin/static/js/lightbox.js [new file with mode: 0644]
mediagoblin/templates/mediagoblin/user_pages/media.html

diff --git a/mediagoblin/static/css/lightbox.css b/mediagoblin/static/css/lightbox.css
new file mode 100644 (file)
index 0000000..e4fa4c4
--- /dev/null
@@ -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 (file)
index 0000000..8d7bf31
--- /dev/null
@@ -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('<div class="overlay"></div><div class="box"></div>')
+        .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('<img height=100% width=100% src="' + overlayLink + '" alt="" />');
+    //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"
+        });
+    });
+}
index ed3d18429be5732849f528450d60b7842f9c73b3..f76e0a8fea02e96ff70a8d1983ef56d16527dfb7 100644 (file)
 {% block mediagoblin_head %}
 <!--[if lte IE 8]><link rel="stylesheet"
     href="{{ request.staticdirect('/extlib/leaflet/leaflet.ie.css') }}" /><![endif]-->
+
+ <link rel="stylesheet" type="text/css" href="{{ request.staticdirect('/css/lightbox.css') }}">
   <script type="text/javascript"
           src="{{ request.staticdirect('/js/comment_show.js') }}"></script>
   <script type="text/javascript"
           src="{{ request.staticdirect('/js/keyboard_navigation.js') }}"></script>
+  <script type="text/javascript"
+          src="{{ request.staticdirect('/js/lightbox.js') }}"></script>
 
   {% template_hook("location_head") %}
   {% template_hook("media_head") %}
@@ -57,7 +61,7 @@
          #}
         {% if media.media_files.has_key('medium') %}
           <a href="{{ request.app.public_store.file_url(
-                        media.media_files['original']) }}">
+                        media.media_files['original']) }}" class="lightbox">
             <img class="media_image"
                  src="{{ display_media }}"
                  alt="{% trans media_title=media.title -%}