Learn how to create responsive LightBox, click image to zoom with CSS and JS
HTML (Add this code at the end of body):
<div id="fancybox" class="modal" style="display: none;"> <span class="fancybox-close">×</span> <img class="fancybox-content" id="fancybox-img"> <div id="fancybox-caption"></div> </div>
CSS:
/* Fancybox */
.fancyimg {
border-radius: 5px;
cursor: pointer;
transition: 0.3s;
}
.fancyimg:hover {opacity: 0.7;}
/* The Modal (background) */
#fancybox {
position: fixed; /* Stay in place */
z-index: 1; /* Sit on top */
padding: 20px; /* Location of the box */
left: 0;
top: 0;
width: 100%; /* Full width */
height: 100%; /* Full height */
overflow: auto; /* Enable scroll if needed */
background-color: rgb(0,0,0); /* Fallback color */
background-color: rgba(0,0,0,0.9); /* Black w/ opacity */
}
/* Modal Content (Image) */
.fancybox-content {
margin: auto;
display: block;
width: 100%;
max-width: 900px;
}
/* Caption of Modal Image (Image Text) - Same Width as the Image */
#fancybox-caption {
margin: auto;
display: block;
width: 80%;
max-width: 700px;
text-align: center;
color: #ccc;
padding: 10px 0;
height: 40px;
}
/* Add Animation - Zoom in the Modal */
.fancybox-content, #fancybox-caption {
-webkit-animation-name: zoom;
-webkit-animation-duration: 0.6s;
animation-name: zoom;
animation-duration: 0.6s;
}
@-webkit-keyframes zoom {
from {-webkit-transform:scale(0)}
to {-webkit-transform:scale(1)}
}
@keyframes zoom {
from {transform:scale(0)}
to {transform:scale(1)}
}
/* The Close Button */
.fancybox-close {
position: absolute;
top: 15px;
right: 35px;
color: #f1f1f1;
font-size: 40px;
font-weight: bold;
transition: 0.3s;
}
.fancybox-close:hover,
.fancybox-close:focus {
color: #bbb;
text-decoration: none;
cursor: pointer;
}
/* 100% Image Width on Smaller Screens */
@media only screen and (max-width: 700px){
.fancybox-content {
width: 100%;
}
}
/* FancyBox end */
JS:
$("img.fancyimg").on("click", function() {
var img_src = $(this).attr("data-big");
var img_src = img_src ? img_src : $(this).attr("src");
$("#fancybox").show();
$("#fancybox-img").attr("src", img_src);
$("#fancybox-caption").html($(this).attr("alt"));
});
$(".fancybox-close").on("click", function() {
$("#fancybox").hide();
});
Configuration, Just one 😉
- Add ‘class=”fancyimg”‘ to the img tag you wanna click and zoom
P.S.: You can also show large image by setting data attribute: data-big=”/big-img-path”
That’s it, you’re good to go with LightBox built with CSS & Javascript without using any plugins. Enjoy 🙂