Animation fondu div

jon1234 -  
hcp7kuz Messages postés 243 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Actuellement en train de créer un site, je m'attaque a quelques animations

Je voudrais effectuer un fondu sur différent élément pour es faire apparaitre et disparaitre.

Voici mes script:


var fin = false;
var fou = false;

function fadeOut(id){
fin = false;
fou = true;
var el = document.getElementById(id);
//el.style.opacity = 1;
(function fadeo() {
if ((el.style.opacity -= .05) < 0) {
el.style.visibility = "hidden";
}
else if(fou == false){}
else {
requestAnimationFrame(fadeo);
}
})();
}

// fade in

function fadeIn(id){
fin = true;
fou = false;
var el = document.getElementById(id);
//el.style.opacity = 0;
el.style.visibility="visible";
(function fadei() {
var val = parseFloat(el.style.opacity);
if (!((val += .05) > 1) && fin==true) {
el.style.opacity = val;
requestAnimationFrame(fadei);
}
})();
}


et en html :

<a href="#detail" rel="nofollow noopener noreferrer" target="_blank" class="button" onMouseOver="javascript:fadeIn('explainroom');document.getElementById('explaintext').innerHTML = 'Test';" onMouseOut="javascript:fadeOut('explainroom')">Salon des victiorieux</a>

<div id="explainroom" style="visibility: hidden">
<p id="explaintext">a</p>
</div>


Le fondu fonctionne et l'affiche du texte est super, mais lorsque je glisse rapidement mon curseur dedans puis dehors, le fondu "plante" et reste sur l'opacité où il en étais.
J'ai portant essayé de crée un système de variable pour faire la rotation "in" "out" mais rien n'y fais.

merci de votre aide !
A voir également:

3 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Quel navigateur utilises tu ?
Que dis la console de ton navigateur (via les outils de debug de celui-ci) ?

Personnellement sous Firefox .. je n'arrive pas à reproduire ton problème ...
Ni sous Chrome non plus ....

0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

Une solution presque équivalente en css :
<a class="link-fade" href="#" rel="nofollow noopener noreferrer" target="_blank">Lien</a>
<div class="content-fade">Contenu</div>

.content-fade {
  opacity: 0;
  transition: opacity 1s ease;
}

.link-fade:hover ~ .content-fade {
  opacity: 1;
}


L'inconvénient de cette solution est que le contenu à afficher en fondu (.content-fade dans l'exemple) doit être situé au même niveau et après le lien (.link-fade) dans la structure html.

Bonne journée,
0
hcp7kuz Messages postés 243 Date d'inscription   Statut Membre Dernière intervention   23
 
Tu pourrais éventuellement utiliser la fonction fadeIn() ( https://api.jquery.com/fadeIn/ ) et la fonction fadeOut ( https://api.jquery.com/fadeout/ ) en jQuery ? Ces fonctions sont très faciles à utiliser.
0