Jquery – way to grow/shrink an image on hover using Jquery


Is there a way, using Jquery to grow and then shrink an image (with animation so it looks smooth) on hovering without affecting the layout too much (I'm assuming the padding would have to shrink and then grow as well).

With a bit of messing around, I finally came up with the solution, thanks to everyone who helped out.

<style type="text/css"> 
    .growImage {position:relative;width:80%;left:15px;top:15px}
    .growDiv { left: 100px; top: 100px;width:150px;height:150px;position:relative }

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

<div class="growDiv"> 
      <img class="growImage" src="image.jpg" alt="my image"> 

<script type="text/javascript">


      //moving the div left a bit is completely optional
      //but should have the effect of growing the image from the middle.
      $(this).stop().animate({"width": "100%","left":"0px","top":"0px"}, 400,'swing');
      $(this).stop().animate({"width": "80%","left":"15px","top":"15px"}, 200,'swing');

Best Solution

If you have your image positioned absolutely to the document in CSS, the rest of the page layout should not change when you animate your image.

You should be able to use jQuery's animate() function. The code would look something like this:

    function(){$(this).animate({width: "400px", height:"400px"}, 1000);},        
    function(){$(this).animate({width: "200px", height:"200px"}, 1000);}

This example would grow the image with id=yourImage to 400px wide and tall when moused over, and bring it back to 200px wide and tall when the hover ends. That said, your issue lies more in HTML/CSS than it does jQuery.