jQuery animation pour une survolez avec la souris dans la direction"

Je suis en train de simuler l'effet où j'ai passez la souris sur une image, une superposition semi-transparente de l'image va s'estomper dans le sens où votre souris est venue. Vice-versa lors de votre souris sort de l'image (fadeout + déplace loin)

Je vous ai préparé un page de test pour cela. Aller de l'avant et de le vérifier, il permettra de clarifier ce que l'effet désiré est.

J'ai défini une structure HTML pour ceci:

    <div class="overlayLink">
        <img src="assets/work/thumbnails/kreatude.jpg" alt="Kreatude" />
        <div class="overlayLink_overlay_bg">&nbsp;</div>
        <div class="overlayLink_overlay_fg">
            <span class="overlayLink_overlay_link"><a href="#">View Case Study</a></span>
            <div class="top">&nbsp;</div>
            <div class="left">&nbsp;</div>
            <div class="right">&nbsp;</div>
            <div class="bottom">&nbsp;</div>
        </div>
     </div>

et suivants JS (je suis en utilisant jQuery):

jQuery(document).ready(function () {
ourWork();
});
function ourWork(){
var inHandler = function(){
var blue_bg = jQuery(this).find('.overlayLink_overlay_bg');
var divClass = inClass;
blue_bg.stop(true,true).fadeIn();
var ml,mt;
if(divClass == 'left'){
ml = -260;
mt = 0;
}
else if(divClass == 'right'){
ml = 260;
mt = 0;
}
else if(divClass == 'top'){
ml = 0;
mt = -140;
}
else if(divClass == 'bottom'){
ml = 0;
mt = 140;
}       
//positioning
jQuery(this).find('a').css({
'marginLeft': ml + 'px',
'marginTop' : mt + 'px'
});
//animation
jQuery(this).find('a').stop(true,true).animate({
"marginLeft": "0px",
"marginTop": "0px"
}, "slow");
}
var outHandler = function(){
var blue_bg = jQuery(this).find('.overlayLink_overlay_bg');
var divClass = outClass;
blue_bg.stop(true,true).fadeOut();
var ml,mt;
if(divClass == 'left'){
ml = -260;
mt = 0;
}
else if(divClass == 'right'){
ml = 260;
mt = 0;
}
else if(divClass == 'top'){
ml = 0;
mt = -140;
}
else if(divClass == 'bottom'){
ml = 0;
mt = 140;
}        
//animation
jQuery(this).find('a').stop(true,true).animate({
"marginLeft": ml + "px",
"marginTop": mt + "px"
}, "slow");
}
var inClass, outClass;
jQuery('.overlayLink_overlay_fg div').hover(function(){        
inClass = jQuery(this).attr('class');
},function(){       
outClass = jQuery(this).attr('class');
});
jQuery('.overlayLink').mouseenter(inHandler).mouseleave(outHandler);
}

explication:

Fondamentalement, je n'ai quatre absolue positionné divs sur le haut de l'image, à savoir la direction (à gauche,en haut,en bas,à droite) quand j'ai passez la souris sur l'un de ces 4 div (.overlayLink_overlay_fg div), j'ai mis le nom de la classe de la planait div dans une variable (var théorique en classe et var surclasser)

Une fois que j'ai passez la souris sur la div qui couvre la zone de l'image.overlayLink) je demande à la direction de l'théorique en classe ou surpassent variable et l'exécution de l'animation (inHandler,outHandler)

cependant tout cela semble fonctionner, c'est un petit glitch lorsque vous déplacez votre souris vraiment rapide, maintenant, je me demande quel est le problème (qui est à l'origine des problèmes) et comment il pourrait être fixé avec mon code actuel.

Merci d'avance

Theres beaucoup de problèmes dans la page liée ci-dessus - c'est le vôtre à droite? Si je vais vers le bas à partir du haut, il fonctionne. Puis vers la gauche, il fonctionne. Ensuite, si je vais vers le bas à partir du haut de nouveau, il fonctionne, mais aller vers la gauche fait la superposition de monter. Ensuite, si je vais à partir de la gauche, après que la superposition vient du haut. N'a pas d'importance à quelle vitesse je le fais.
vous avez raison, ne savais pas que c'était si glitchy. Et oui c'est ma page. Cependant il doit y avoir une raison logique de ce qui se passe. Si je passe en revue mon code je ne vois pas l'erreur de logique, ce qui me dérange un peu lol.
Il suffit de ne pas. Il n'est pas juste pour toucher les utilisateurs.

OriginalL'auteur | 2010-09-02