Bonjour à tous
Je suis confronté à ce problème sûrement récurrent mais auquel je ne trouve aucune solution...
Pour faire simple : j'ai un élément block (une div par exemple) qui contient un autre élément. Le deuxième élément n'existe pas encore ou est masqué. Sur mon premier élément j'ai un évènement "mouseover" qui déclenche l'apparition du deuxième élément et un évènement "mouseout" qui le masque. Jusque là, rien de bien grandiose.
Le problème qui se pose c'est lorsque je passe la souris sur mon deuxième élément (qui est contenu dans le premier élément, ne l'oublions pas) : l'évènement "mouseout" du premier élément se déclenche ce qui a pour conséquence de masquer le deuxième... et comme ce dernier est masqué il y a à nouveau "mouseover" sur le premier élément... et le deuxième rapparait donc causant "mouseout" sur le premier, ce qui masque le deuxième, etc., etc., indéfiniment ce qui donne, vous l'aurez compris : un clignotement !
Pour schématiser tout ça j'ai le code HTML suivant :
Et le code javascript (j'utilise la librairie Prototype !) :
Je n'ai pas détaillé le CSS mais les éléments 1 et 2 ont bien évidemment une largeur et une hauteur.
Si quelqu'un a une solution à me proposer ça serait vraiment génial (c'est pour ça que je post) ! Ce n'est pas la première fois que je suis confronté à ce problème et là j'aimerais bien le résoudre une bonne fois pour toute !
Merci de vos réponses
Je suis confronté à ce problème sûrement récurrent mais auquel je ne trouve aucune solution...
Pour faire simple : j'ai un élément block (une div par exemple) qui contient un autre élément. Le deuxième élément n'existe pas encore ou est masqué. Sur mon premier élément j'ai un évènement "mouseover" qui déclenche l'apparition du deuxième élément et un évènement "mouseout" qui le masque. Jusque là, rien de bien grandiose.
Le problème qui se pose c'est lorsque je passe la souris sur mon deuxième élément (qui est contenu dans le premier élément, ne l'oublions pas) : l'évènement "mouseout" du premier élément se déclenche ce qui a pour conséquence de masquer le deuxième... et comme ce dernier est masqué il y a à nouveau "mouseover" sur le premier élément... et le deuxième rapparait donc causant "mouseout" sur le premier, ce qui masque le deuxième, etc., etc., indéfiniment ce qui donne, vous l'aurez compris : un clignotement !
Pour schématiser tout ça j'ai le code HTML suivant :
<!-- Element 1, parent de l'élément 2 -->
<div id="element1">
<!-- Element 2, fils de l'élément 1 et non visible -->
<div id="element2" style="display:none;"></div>
</div>
Et le code javascript (j'utilise la librairie Prototype !) :
//Evènement "mouseover" sur l'élément 1
Event.observe( $('element1'), 'mousover', function (e) {
//Affichage de l'élément 2
$('element2').style.display = '';
});
//Evènement "mouseout" sur l'élément 1
Event.observe( $('element1'), 'mouseout', function (e) {
//Masquage de l'élément 2
$('element2').style.display = 'none';
});
Je n'ai pas détaillé le CSS mais les éléments 1 et 2 ont bien évidemment une largeur et une hauteur.
Si quelqu'un a une solution à me proposer ça serait vraiment génial (c'est pour ça que je post) ! Ce n'est pas la première fois que je suis confronté à ce problème et là j'aimerais bien le résoudre une bonne fois pour toute !
Merci de vos réponses
