In this post I'm going to show you how to create a dynamic image overlay with jQuery. When a user moves his/her mouse on the image, the overlay is displayed. Then, when the mouse leaves the image area, the overlay is hidden. And so on. We start with a simple image gallery like this:
<ul id="gallery"> <li> <img src="http://dev.css-zibaldone.com/onwebdev/post/star-rating/1.jpg" alt="" /> <p>Lorem ipsum dolor sit amet.</p> </li> <!-- more items --> </ul>
The paragraph needs to be absolutely positioned and hidden with CSS, like so:
#gallery { margin: 0 auto; padding: 2em 0; width: 70%; height: 100%; overflow: hidden; list-style: none; } #gallery li { float: left; height: 250px; margin-right: 0.5em; width: 32%; position: relative; } #gallery li img { display: block; height: 100%; width: 100%; cursor: pointer; } #gallery li p { width: 100%; height: 0px; background: silver; position: absolute; top: 0; left: 0; overflow: hidden; text-align: center; font: small Arial, sans-serif; text-transform: uppercase; z-index: 1; margin: 0; }
We've created a contextual positioning on each list item so that each item will be the positioning context of our paragraph. Now let's add jQuery:
$(document).ready(function() { $('#gallery li').each(function() { var $li = $(this); var $img = $li.find('img'); $img.mouseover(function() { $img.next().animate({ height: '100%', lineHeight: '250px', opacity: '0.7' }, 'slow'); }); $img.mouseout(function() { $img.next().animate({ height: 0, opacity: 0 }, 'slow'); }); }); });
We use the animate()
method to set the height and the opacity of our paragraph based on the presence of the mouse pointer on the image area. You can see a demo below.
so smooth :)
thanks for tutor^^