Introduction
When speaking about design, there is one company that is impossible
to go without. Apple values design – being a new product, a fancy
catalog or their website – there is always something to admire.
This week, we are making an
Apple-like slideshow gallery,
similar to the one they use on their website to showcase their
products. It will be entirely front-end based, no PHP or databases
required.
So go ahead and download the example source code and continue with the first step.
Step 1 – XHTML
There is no need for a database nor a PHP back-end for this gallery.
This means that it is really easy to incorporate into an existing site –
you just have to change a few lines of html code.
Lets take a closer look at the XHTML markup:
demo.html
07 | <div class="slide"><img src="img/sample_slides/macbook.jpg" width="920" height="400" />div> |
08 | <div class="slide"><img src="img/sample_slides/iphone.jpg" width="920" height="400" />div> |
09 | <div class="slide"><img src="img/sample_slides/imac.jpg" width="920" height="400" />div> |
16 | <li class="fbar"> li><li class="menuItem"><a href=""><img src="img/sample_slides/thumb_macbook.png" />a>li><li class="menuItem"><a href=""><img src="img/sample_slides/thumb_iphone.png" />a>li><li class="menuItem"><a href=""><img src="img/sample_slides/thumb_imac.png" />a>li> |
The idea is simple – there are two main container DIVs – the one with id=”
menu” holds the thumbnails, and the other –
“slides” holds the slides themselves.
To add a new slide, you’ll just have to add new elements to both containers. The slides are
JPGs, and the thumbnails are transparent
PNGs, but you can use any image type you want.
You can even put any kind of HTML in as well. For example you could
make a certain slide into a hyperlink by just putting the image inside
of an anchor tag.
That said, it is important to have the
width and
height
attributes set up of the slide images – it is used by jQuery to
determine the width of the sliding area, as you’ll see in a moment.
Also notice that the thumbnail
LI elements. The first one is assigned a class name of
fbar , used to only show a vertical dividing bar, and the others are assigned a
menuItem class – used as the slideshow control buttons.
Now lets continue with the next step.

An Apple-like Slideshow Gallery
Step 2 – CSS
Lets see what lays hidden in our stylesheet. I’ve only included the
styles that are directly used by the gallery. You can view the rest of
the styles, used to show the demo, in
demo.css.
demo.css
001 | body,h1,h2,h3,p,quote,small,form,input,ul,li,ol,label{ |
012 | font-family:Arial, Helvetica, sans-serif; |
019 | -moz-box-shadow:0 0 3px #AAAAAA; |
020 | -webkit-box-shadow:0 0 3px #AAAAAA; |
021 | box-shadow:0 0 3px #AAAAAA; |
025 | -moz-border-radius-bottomleft:4px; |
026 | -webkit-border-bottom-left-radius:4px; |
027 | border-bottom-left-radius:4px; |
029 | -moz-border-radius-bottomright:4px; |
030 | -webkit-border-bottom-right-radius:4px; |
031 | border-bottom-right-radius:4px; |
033 | border:1px solid white; |
035 | background:url(img/panel.jpg) repeat-x bottom center #ffffff; |
068 | display:inline-block; |
076 | background:url(img/pic_bg.png) repeat; |
081 | background:url(img/active_bg.png) no-repeat; |
091 | background:url(img/divider.png) no-repeat right; |
096 | background:url(img/divider.png) no-repeat right; |
We have used a number of CSS3 specific properties in this slideshow gallery:
- box-shadow, which makes the gallery cast a light
shadow around its edges. To use it, you have to provide offsets by X and
Y (0 0 here), the blurring (3px in this example) and the color of the
shadow;
- border-radius, which rounds the bottom corners of the gallery.
Unfortunately, these properties are only supported in Safari, Chrome
and Firefox for now. However in the rest of the browsers you still have a
completely functional gallery.
Now it is time for some jQuery magic.
Step 3 – jQuery
As I already mentioned, this gallery does not use any server-side
code, so it is all up to the front end to make the slideshow tick.
script.js
01 | $(document).ready(function(){ |
05 | var positions = new Array(); |
07 | $('#slides .slide').each(function(i){ |
09 | positions[i]= totWidth; |
10 | totWidth += $(this).width(); |
16 | alert("Please, fill in width & height for all your images!"); |
21 | $('#slides').width(totWidth); |
25 | $('#menu ul li a').click(function(e){ |
28 | $('li.menuItem').removeClass('act').addClass('inact'); |
29 | $(this).parent().addClass('act'); |
31 | var pos = $(this).parent().prevAll('.menuItem').length; |
33 | $('#slides').stop().animate({marginLeft:-positions[pos]+'px'},450); |
40 | $('#menu ul li.menuItem:first').addClass('act').siblings().addClass('inact'); |
The main idea behind this script is to loop through all the slides,
sum up their widths and assign the sum to the slides container – the DIV
with the id=”
slides“. Because the slides are floated to the left and have enough room, they align next to each other.
Later, when you click a thumbnail, the script calculates which slide to show and scrolls the
#slides div by assigning a negative margin via the
animate method.
And with just 40 lines of code, the Apple-like slider gallery is finished!

The Gallery Explained
Conclusion
In three easy steps we created a beautiful Apple-style slideshow
gallery. It can be easily included into any website by just adding a few
lines of code.
You are free to modify and built upon the gallery for your own
projects. Also be sure to share what you’ve done with the community via
our
Tutorial Mashups (above the comment section)
0 komentar:
Posting Komentar