2010-06-04 5 views
1

Ok, j'ai une structure comme celle-ci:jQuery slide up the image?

<div class="image"> 
    <img src="img1.jpg" alt="" /> 
</div> 

<div class="image"> 
    <img src="img1.jpg" alt="" /> 
</div> 

<div class="image"> 
    <img src="img1.jpg" alt="" /> 
</div> 

et CSS comme ceci:

.image{ 
    height:100px; 
    overflow: hidden; 
} 

SO essentiellement, seul le 100px haut de l'image montre. Lorsque l'utilisateur survole l'image, je veux faire défiler l'image vers le bas 100px. c'est-à-dire, il anime de montrer le haut 100px au fond 100px.

Maintenant, si toutes les images avaient la même hauteur, ce serait facile. Je pourrais le faire, pour une image haute 500px:

$('.image img').hover(
    function(){ 
    $(this).stop().animate({marginTop:'-400px',}, 1000); 
    }, 
    function(){ 
    $(this).stop().animate({marginTop:'0px',}, 1000); 
    } 
    ); 

Le problème est, les trois images sont de hauteurs différentes. Et pour autant que je sache, il n'y a vraiment aucune méthode fiable pour obtenir la hauteur de l'image cross-browser. Sp aucune idée comment je peux résoudre ceci?

Toute aide est très appréciée.

Répondre

0

Avez-vous essayé d'utiliser la méthode height() de jQuery pour obtenir la hauteur de l'image? Il existe probablement des correctifs de compatibilité inter-navigateur intégrés.

$('.image img').hover(
    var $th = $(this); 
    var height = $th.height(); 
    function(){ 
    $th.stop().animate({marginTop:-(height - 100)}, 1000); 
    }, 
    function(){ 
    $th.stop().animate({marginTop:'0px'}, 1000); 
    } 
); 
+0

J'ai essayé de l'utiliser, et cela fonctionne. Mais j'ai lu quelque part qu'il y a des problèmes. Je vais essayer de l'utiliser quand même :-) – Rohan

+0

@Rohan - Je n'ai pas entendu ça. Cela ne veut pas dire que ce n'est pas vrai cependant. Je pourrais certainement voir des problèmes si l'image n'est pas complètement chargée. – user113716