jQuery Responsive Grid Gallery Plugin
File Size: | 3.1 MB |
---|---|
Views Total: | 4215 |
Last Update: | |
Publish Date: | |
Official Website: | Go to website |
License: | MIT |
A small jQuery plugin for creating a responsive justified image grid with a gallery view using jQuery magnific-popup plugin. In the gallery view, you can navigate through the images via left/right arrows or arrow keys and close the view by pressing 'ESC' key.
How to use it:
1. Load the necessary jQuery library and the jQuery magnific-popup plugin in the document.
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script> <link rel="stylesheet" href="css/magnific-popup.css"> <script src="js/jquery.magnific-popup.js"></script>
2. Create a list of images to be used for the gallery.
<div id="myGallery"> <ul> <li> <a href="images/big/1.jpg"> <img src="images/1.jpg" width="190" height="190" alt="image 01"> </a> </li> <li> <a href="images/big/2.jpg"> <img src="images/2.jpg" width="190" height="190" alt="image 01"> </a> </li> <li> <a href="images/big/3.jpg"> <img src="images/3.jpg" width="190" height="190" alt="image 01"> </a> </li> ... </ul> </div>
3. The basic CSS styles for the gallery.
#myGallery { width: 100%; height: auto; } #myGallery ul { width: 100%; height: auto; padding: 0; margin: 0; list-style: none; } #myGallery ul li { -webkit-transition: all .2s ease-in; -moz-transition: all .2s ease-in; -o-transition: all .2s ease-in; -ms-transition: all .2s ease-in; transition: all .2s ease-in; } #myGallery ul li:hover { opacity: 0.4; filter: alpha(opacity=40); } #myGallery #sscsworld { width: 100%; height: auto; display: block; } #myGallery .gallary-row { width: 100%; height: auto; } .spacer { width: 100%; height: 0px; margin: 0; padding: 0; clear: both; display: block; }
4. The core JavaScript.
$.fn.mycaptcha = function(options) { var gallerystuff = []; var inicio = 0; var itensPagina = 12; var getContainer = $(this); var cPage = 0; var divTotal; var slideShow = 'next'; var defaults = { type: 'default', width: 'auto', navHolder: 'NEXT', nextText: 'none', prevText: 'none', gutterSpace: 10, coloum: 10, activate: function(){} } var options = $.extend(defaults, options); var opt = options, jtype = opt.type, navHolder = opt.navHolder, jwidth = opt.width, jnextText = opt.nextText, jprevText = opt.prevText, jgutterSpace = opt.gutterSpace, jcoloum = opt.coloum; var total = $(this).find('ul> li').size(); $(this).find('ul> li').each(function(index) { var imageSrc = $(this).find('img').attr('src'); //var thisHtml = $(this).text(); var imageHref = $(this).find('a').attr('href'); var imageCaption = $(this).find('img').attr('alt'); gallerystuff.push( {'imageSrc':imageSrc, 'imageHref':imageHref, 'imageCaption':imageCaption} ); }); $(this).html(''); $(this).prepend('<div id="sscsworld"></div>'); $(this).append('<div id="navHolder"></div>'); $(this).append('<div class="spacer"></div>'); if(opt.navHolder != 'none') { $(this).find(opt.navHolder).html('<div id="next-swa" class="swa-nav">'+opt.nextText+'</div><div id="prev-swa" class="swa-nav">'+opt.prevText+'</div>'); $(this).find('#next-swa').click(function(e) { e.preventDefault(); showPhotoNext(); return false; }); // $(this).find('#prev-swa').click(function(e) { e.preventDefault(); showPhotoPrev(); return false; }); } //////////////////////////////////////////////////////////// setGallery(); /////////////////////////////////////// function setGallery() { //alert(opt.coloum); getContainer.find('#sscsworld').html(''); var letCount = 0; var letCountId = 0; var getGal = '<div class="gallary-row" id="gallary-row-'+letCountId+'" style="display:none;">'; //getGal += '<ul>'; for (var i = 0; i<total; i++) { getGal += '<a class="group_'+letCountId+'" href="'+gallerystuff[i].imageHref+'" title="'+gallerystuff[i].imageCaption+'"><img src="'+gallerystuff[i].imageSrc+'" alt="'+gallerystuff[i].imageCaption+'" /></a>'; if(letCount == opt.coloum-1) { getGal += '<div class="spacer"></div>'; getGal += '</div>'; letCountId++; letCount = 0; getGal += '<div class="gallary-row" id="gallary-row-'+letCountId+'" style="display:none;">'; } else { letCount++; } } getGal += '<div class="spacer"></div>'; getGal += '</div>'; getGal += '<div class="spacer"></div>'; getContainer.find('#sscsworld').html(getGal); //////// $('.gallary-row a').magnificPopup({ //delegate: 'a', // child items selector, by clicking on it popup will open gallery:{enabled:true}, type: 'image' // other options }); /*getContainer.find('#sscsworld #gallary-row-0').each(function(index) { //alert($(this).html()); $(this).magnificPopup({ delegate: 'a', // child items selector, by clicking on it popup will open type: 'image' // other options }); });*/ /////////// updateView(); } function updateView() { updateGaleryDisplay(); divTotal = getContainer.find('#sscsworld > .gallary-row').size(); getContainer.find('#sscsworld #gallary-row-'+cPage).fadeIn('slow'); } //////////////////////////////////////////////////////////// function showPhotoNext() { if(cPage < divTotal-1) { getContainer.find('#sscsworld #gallary-row-'+cPage).fadeOut( "slow", function() { cPage++; showCurrent(); }); } } function showCurrent() { getContainer.find('#sscsworld #gallary-row-'+cPage).fadeIn('slow'); } function showPhotoPrev() { if(cPage > 0) { getContainer.find('#sscsworld #gallary-row-'+cPage).fadeOut( "slow", function() { cPage--; showCurrent(); }); } } ////////////////////////////////////////////////////// function updateGaleryDisplay() { var nn = 0; var getDocW = getContainer.innerWidth(); var myStyle = ''; //alert('getDocW: '+getDocW) if(getDocW <= 320) { //alert(1); myStyle = 'single'; } else if(getDocW > 320 && getDocW <= 480) { myStyle = 'double'; } else if(getDocW > 480 && getDocW <= 768) { myStyle = 'three'; } else { myStyle = 'four'; } //////////////////////////////////////////////// getContainer.find('#sscsworld .gallary-row a').each(function(index) { var imageSrc = $(this).find('img').attr('src'); var Height = 0; if(myStyle == 'single') { $(this).css({'width':'100%', 'display':'block', 'height':'auto', 'margin':'0 0 '+opt.gutterSpace+'px 0'}); } else if(myStyle == 'double') { var getTotalSpace = opt.gutterSpace; var newW = (getContainer.width()-getTotalSpace)/2; if(nn == 0) { $(this).css({'width':newW+'px', 'height':'auto', 'margin':'0 '+opt.gutterSpace+'px '+opt.gutterSpace+'px 0', 'float':'left'}); nn = 1; } else { $(this).css({'width':newW+'px', 'height':'auto', 'margin':'0 0 '+opt.gutterSpace+'px 0', 'float':'left'}); nn = 0; } } else if(myStyle == 'three') { var getTotalSpace = opt.gutterSpace*2; var newW = (getContainer.width()-getTotalSpace)/3; if(nn == 0) { $(this).css({'width':newW+'px', 'height':'auto', 'margin':'0 0 '+opt.gutterSpace+'px 0', 'float':'left'}); nn = 1; } else if(nn == 1) { $(this).css({'width':newW+'px', 'height':'auto', 'margin':'0 '+opt.gutterSpace+'px '+opt.gutterSpace+'px '+opt.gutterSpace+'px', 'float':'left'}); nn = 2; } else if(nn == 2) { $(this).css({'width':newW+'px', 'height':'auto', 'margin':'0 0 '+opt.gutterSpace+'px 0', 'float':'left'}); nn = 0; } } else if(myStyle == 'four') { var getTotalSpace = opt.gutterSpace*3; var newW = (getContainer.width()-getTotalSpace)/4; if(nn == 0) { $(this).css({'width':newW+'px', 'height':'auto', 'margin':'0 0 '+opt.gutterSpace+'px 0', 'float':'left'}); nn = 1; } else if(nn == 1) { $(this).css({'width':newW+'px', 'height':'auto', 'margin':'0 '+opt.gutterSpace+'px '+opt.gutterSpace+'px '+opt.gutterSpace+'px', 'float':'left'}); nn = 2; } else if(nn == 2) { $(this).css({'width':newW+'px', 'height':'auto', 'margin':'0 '+opt.gutterSpace+'px '+opt.gutterSpace+'px 0', 'float':'left'}); nn = 3; } else if(nn == 3) { $(this).css({'width':newW+'px', 'height':'auto', 'margin':'0 0 '+opt.gutterSpace+'px 0', 'float':'left'}); nn = 0; } } }); //////////////////////////////////////////////// getContainer.find('#sscsworld a img').css({'width':'100%', 'height':'auto', 'display':'block'}); getContainer.find('#sscsworld').fadeIn('slow'); getContainer.find('#sscsworld').css({'min-height':'100px'}); var getHH = getContainer.find('#sscsworld').height(); //$(".group2").colorbox({rel:'group2', transition:"fade"}); /*$('.group2').magnificPopup({ type: 'image' // other options });*/ setTimeout(updateGaleryDisplay, 100); } $( window ).resize(function() { updateGaleryDisplay(); }); }
5. Initialize the gallery with default options.
$('#myGallery').mycaptcha({ type: 'default', width: 'auto', navHolder: 'NEXT', nextText: 'none', prevText: 'none', gutterSpace: 10, coloum: 10, activate: function(){} });
This awesome jQuery plugin is developed by swarupporel. For more Advanced Usages, please check the demo page or visit the official website.