Stacked Photo Card Gallery/Slider Using jQuery And CSS/CSS3
File Size: | 3.77 KB |
---|---|
Views Total: | 3036 |
Last Update: | |
Publish Date: | |
Official Website: | Go to website |
License: | MIT |

This tutorial shows how to make use of jQuery and CSS animations to create a fancy stacked photo card gallery/slider just like a stack of polaroid pictures.
How to use it:
1. Add images to the slider following the HTML structure as these:
<div id="allcontent"> <div id="maincontent"> <div class="portfolio"> <img src="1.jpg" alt="Image Alt" /><br /> <div class="ombra"></div> </div> <div class="portfolio"> <img src="2.jpg" alt="Image Alt" /><br /> <div class="ombra"></div> </div> <div class="portfolio"> <img src="3.jpg" alt="Image Alt" /><br /> <div class="ombra"></div> </div> <div class="portfolio"> <img src="4.jpg" alt="Image Alt" /><br /> <div class="ombra"></div> </div> <div class="portfolio"> <img src="5.jpg" alt="Image Alt" /><br /> <div class="ombra"></div> </div> </div> <div id="navi"></div> </div>
2. The main CSS for the slider.
img { width: 100%; } #allcontent { margin: 60px auto 0 auto; width: 100%; max-width: 1140px; height: 700px; position: relative; animation: comein 1.5s ease-in-out; } .portfolio { width: 100%; max-width: 1000px; position: absolute; right: 0; top: 0; transition: 0.2s; cursor: pointer; box-shadow: -2px 0 3px rgba(0, 0, 0, 0.3); } .portfolio:nth-child(1) { left: 10px; } .portfolio:nth-child(1):hover { left: 0px; transform: rotate(-2deg); } .portfolio:nth-child(2) { left: 10%; } .portfolio:nth-child(2):hover { left: 5%; transform: rotate(-2deg); } .portfolio:nth-child(3) { left: 20%; } .portfolio:nth-child(3):hover { left: 15%; transform: rotate(-2deg); } .portfolio:nth-child(4) { left: 30%; } .portfolio:nth-child(4):hover { left: 25%; transform: rotate(-2deg); } .portfolio:nth-child(5) { left: 40%; } .portfolio:nth-child(5):hover { left: 35%; transform: rotate(-2deg); } .opened { z-index: 1000; left: 0 !important; transform: rotate(0deg); box-shadow: 0 0 3px rgba(0, 0, 0, 0.3); width: 100%; max-width: 1140px; } .opened img { z-index: 5; } .ombra { position: absolute; bottom: 20px; left: 10px; width: 90%; height: 20px; box-shadow: 0 15px 10px rgba(0, 0, 0, 0.7); transform: rotate(-2deg); display: none; z-index: -1; } .ombra:after { display: block; content: ""; position: absolute; bottom: -8px; right: -93px; width: 90%; height: 20px; box-shadow: 0 15px 10px rgba(0, 0, 0, 0.7); transform: rotate(4deg); }
3. Style the navigation bullets.
#navi { position: absolute; bottom: 50px; left: 50%; margin: 0 0 0 -62px; background: #000; opacity: 0.8; color: white; height: 24px; border-radius: 20px; padding: 7px 10px 0 10px; } .circle { display: inline-block; width: 15px; height: 15px; border-radius: 10px; background: #efefef; border: 1px solid #000; margin-right: 6px; cursor: pointer; } .circle:hover { background: white; border: 1px solid #ccc; } .circle:active, .activenav, .activenav:hover { background: #666; border: 1px solid #333; } .activenav { cursor: default; } .circle:last-child { margin-right: 0; }
4. Include the needed jQuery library on the page.
<script src="/path/to/cdn/jquery.min.js"></script>
5. The main JavaScript (jQuery script) to activate the slider.
$(".portfolio").each(function (index) { $(this).attr("id", "img" + (index + 1)); }); $(".portfolio").each(function () { $("#navi").append('<div class="circle"></div>'); }); $(".circle").each(function (index) { $(this).attr("id", "circle" + (index + 1)); }); $(".portfolio").click(function () { if ($(this).hasClass("opened")) { $(this).removeClass("opened"); $(".portfolio").fadeIn("fast"); $(this).find(".ombra").fadeOut(); $("#navi div").removeClass("activenav"); } else { var indexi = $("#maincontent .portfolio").index(this) + 1; $(this).addClass("opened"); $(".portfolio").not(this).fadeOut("fast"); $(this).find(".ombra").fadeIn(); $("#circle" + indexi).addClass("activenav"); } }); //navi buttons $("#navi div").click(function () { if ($(this).hasClass("activenav")) { return false; } $("#navi div").removeClass("activenav"); $(".portfolio").removeClass("opened"); $(".portfolio").show(); $(".ombra").hide(); var index = $("#navi div").index(this) + 1; $("#img" + index).addClass("opened"); $(".portfolio") .not("#img" + index) .fadeOut("fast"); $("#img" + index) .find(".ombra") .fadeIn(); $(this).addClass("activenav"); });
This awesome jQuery plugin is developed by Mishka-Sakhelashvili. For more Advanced Usages, please check the demo page or visit the official website.