Simple Image carousel using CSS3 and jQuery
The wave of implementing visually attractive web pages is very popular lately. CSS3 and jQuery can be a very good help when you need to build these new fancy way to display information to the user.
One of these is definitely the carousel
. This way to display images is getting very popular but can be cumbersome or difficult if you like to match it with your current website design.
Here's a simple code to create a nice and easy carousel with minimal CSS3 and jQuery code.
HTML
In this example, I put 4 of the 7 wonders of this world. Using a simple menu and the list of these images and a small description.
<nav id="list"> <a>Stonehenge</a> <a>Machu Picchu</a> <a>Great Wall of China</a> <a>Giza Pyramids</a> </nav> <section id="carousel"> <div id="images"> <figure> <img src="/images/7-wonders-stonehenge.jpg" width="400" height="300" alt="7 Wonders Stonehenge" /> <figcaption> Stonehenge <span>United Kingdom</span> </figcaption> </figure> <figure> <img src="/images/7-wonders-machu-picchu.gif" width="400" height="300" alt="7 Wonders Machu Picchu" /> <figcaption> Machu Picchu <span>Peru</span> </figcaption> </figure> <figure> <img src="/images/7-wonders-great-wall-of-china.jpg" width="400" height="300" alt="7 Wonders Great Wall of China" /> <figcaption> Great Wall of China <span>China</span> </figcaption> </figure> <figure> <img src="/images/7-wonders-giza-pyramids.jpg" width="400" height="300" alt="Giza Pyramids" /> <figcaption> Giza Pyramids <span>Egypt</span> </figcaption> </figure> </div> </section>
Javascript (jQuery)
This little code will display the image and description based on the wonder the user selected.
$(document).ready(function() { $('#list a').click(function() { var index = $(this).index(); pos = index * -400; $("figure").css("-webkit-transform","translate(" + pos + "px, 0px)"); $("figure").css("-moz-transform","translate(" + pos + "px, 0px)"); $("figure").css("-o-transform","translate(" + pos + "px, 0px)"); $("figure").css("-ms-transform","translate(" + pos + "px, 0px)"); $("figure").css("transform","translate(" + pos + "px, 0px)"); $("#list a").removeClass('selected'); $(this).addClass('selected'); }); $("#list a:first-child").addClass('selected'); });
CSS
Now, here's the CSS code that will make everything works properly.
div#images { width: 1600px; } nav#list { margin: 1em auto; text-align:center; } nav#list a { color: #333; display: inline-block; margin: 0; padding: 0; text-shadow: 1px 1px 1px #bbb; } nav#list a { border: dotted 1px #aaa; cursor: pointer; padding: 2px; } nav#list a:hover, nav#list a.selected { background: #eee; border: solid 1px #aaa; } figure { float: left; height: 300px; left: 0px; margin: 0; padding: 0; width: 400px; -webkit-transition:all 1.0s ease-in-out 0s; -moz-transition:all 1.0s ease-in-out 0s; -o-transition:all 1.0s ease-in-out 0s; -ms-transition:all 1.0s ease-in-out 0s; transition:all 1.0s ease-in-out 0s; } figcaption { background: rgba(255,255,255,0.7); bottom: 20px; font-size: 1.4em; margin: 0; padding: 0.5em 1em; position: absolute; text-shadow: 1px 1px 1px #fff; width: 100%; } figcaption span { color: #666; font-style: italic; font-weight: bold; font-size: 0.8em; } section#carousel { height: 300px; overflow: hidden; margin: 0 auto; position: relative; width: 400px; }
Now, you can easily add the other 3