Вам определенно нужно держать его абсолютно позиционированным, чтобы вывести его из нормального потока. К сожалению, это также означает, что вам нужно отслеживать позицию. Я мог бы рекомендовать дублировать абсолютно позиционированный div прямо сверху, придать ему более высокий z-индекс, а затем анимировать расширение этого div. При наведении мышки, нажмите его, а затем удалите элемент.
<style>
.over {
/* We use this for all of the generated hover-overs */
position:absolute;
z-index:2;
}
img {
float:left;
position:relative; /* z-index doesn't work unless position is set */
z-index:1;
}
</style>
<div id="images">
<img id="img1" src="foo.jpg">
<img id="img2" src="bar.jpg">
<img id="img3" src="baz.jpg">
</div>
<script>
// First catch the mouse enter, grab position, make new element, append it, then animate
$("img").mouseenter(function() {
var top = $(this).position().top;
var left = $(this).position().left;
var src = $(this).attr("src");
$('<div class="over" style="top:'+top+' left:'+left+'" src="'+src+'"></div>')
.appendTo($("#images"))
.animate({height:300,width:300},"fast");
});
// Note the mouseleave on the hovered element instead of the img
$(".over").mouseleave(function() {
var self = this;
$(this).animate({height:96,width:128},"fast",function() {
self.remove();
}
});
</script>