Get Our Free Ebook
Beginners Guide to HTML

  Tutorials HTML and CSS Tutorials jQuery Examples - Horizontal Accordion

jQuery Examples - Horizontal Accordion

Design Reviver Tutorials Oct 21, 2009

Up until now I have always used Scriptaculous / Prototype for any Java Script animation and effects, but lately I've heard a lot of good things about jQuery. So, I thought I would give it a try, and start doing some experiments.

In this example, I have created an accordion effect that reveals a caption for each thumbnail. I've done similar navigations like this in flash, so I wanted to see how it compared to doing it with jQuery.

In order to use jQuery in your pages you first need to download the latest release and then include the Java Script library within your head tags.

Now lets take a look at the html for this example. I gave the first anchor tag an id, so that we could set an initial width and make it appear expanded when the page is loaded.

Here is the CSS, which is pretty straight forward. The main thing to note is the fixed height being set on the anchor tag. Doing this along with "overflow: hidden" prevents the contained p tag from dropping down below the thumbnail.

list-style: none;
margin: 0;
padding: 0;

ul li{
float: left;
padding: 10px;
display: block;
margin-right: 10px;

ul li a{
display: block;
overflow: hidden;
height: 75px;
width: 75px;

width: 210px;

ul li img{
position: absolute;
border: 3px solid #881212;

ul li p{
margin: 0;
padding: 0;
width: 120px;
display: block;
margin-left: 85px;

And here is the jQuery script that makes it all happen. This can be placed in the head tag. The first thing we do is set a few initial variables: lastBlock represents the block that is already expanded, maxWidth is the width we want our block to be when it is expanded, and minWidth is the width when it is not expanded.

Then we simply set a hover event on all anchor tag contained within all list items. Within the hover event we make two calls of the animate() function: one to close the lastBlock, and another to expand the block we are hovering. Then we set lastBlock equal to the block we just expanded. That way jQuery will know which one to close the next time the hover event is fired. The animate() function allows you to create custom animations by setting new values for multiple properties. In this case we are only animating the width.

One important thing to note is setting "queue" to false. If it is set to true, every hover event is stored and will be animated one after another, resulting in opening and closing long after the last hover happens.

For more info on the animate() function and other jQuery goodness, check out the official documentation.

subscribe to newsletter