2017-06-05 4 views
0

puisque je pense que ce n'est pas une tâche très complexe, j'ai cherché stackoverflow plusieurs fois avec des recherches différentes. mais comme je ne sais pas vraiment comment décrire la solution recherchée en quelques mots, toutes les recherches ont échoué.Fadein élément sur planant même ou autre élément?

c'est un code que j'utilise pour afficher une navigation quand la page se charge, fade après 4 secondes et se fanent le dans lors du survol de la navigation div - et la décoloration dehors quand les feuilles souris:

$(".navigation").delay(4000).fadeTo(1000, 0); 
$(".navigation").on({ 
    mouseleave: function() { 
     $(this).delay(200).fadeTo(100, 0); 
    }, 
    mouseenter: function() { 
     $(this).stop().fadeTo(100, 1); 
    } 
}); 

maintenant je suis à la recherche de code ajouté qui laisse la navigation se fondre pendant que la div-navigation elle-même OU un autre élément-div est plané ... et disparaissent la div de navigation lorsque ce div lui-même ou l'autre est laissé Souris. Puis-je renforcer ce code pour y parvenir ou ai-je besoin de quelque chose de différent?

merci beaucoup! matthias

Répondre

0

Je vais commencer par le partage d'une information importante qui peut vous aider à résoudre ce problème: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/relatedTarget

Ici vous pouvez voir que les deux mouseenter et mouseleave ont une propriété relatedTarget dans leurs données d'événement. Il fait référence à l'élément "venant de" ou "allant à" respectivement. Ci-dessous j'ai prototypé une solution où les divs A et B agissent comme "connectés" en termes de mousein et de mouseout. Pendant mouseenter je n'exécute le gestionnaire si l'élément « venant de » est ni A ni B. Pendant mouseleave j'exécute uniquement le gestionnaire si le « va » élément est ni A, ni B.

$('.show-navigation').on('mouseenter', function(e) { 
 
    if (!$(e.relatedTarget).hasClass('show-navigation')) { 
 
    console.log('Show Navigation'); 
 
    } 
 
}); 
 

 
$('.show-navigation').on('mouseleave', function(e) { 
 
    if (!$(e.relatedTarget).hasClass('show-navigation')) { 
 
    console.log('Hide Navigation'); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="a" class="show-navigation">Element A</div> 
 
<div id="b" class="show-navigation">Element B</div> 
 
<div id="c">Element C</div>

+0

ah, quelle réponse rapide - merci, je vais essayer maintenant. et merci pour le lien! J'étais déjà sur le site Web de jquery mais les solutions que j'ai essayées ont disparu tout dedans ou dehors mais pas la navigation. –

+0

ok, j'ai essayé le code et voir ce qu'il fait. mais comment puis-je "implémenter" ceci dans mon code? Je ne suis pas très bon avec js et le code ci-dessus m'a pris des jours pour comprendre parce qu'il y a tellement de façons de le faire. J'espérais que cela pourrait être quelque chose comme l'ajout d'une classe/élément supplémentaire à la fonction mouseenter, pour déclencher le fondu avec un autre élément aussi. –

+0

Je ne connais pas votre code HTML et les spécificités détaillées de votre configuration. Ce que j'ai proposé est juste un concept. Je vous suggère de prendre votre temps et d'essayer de le mettre en œuvre vous-même. –