Animation fondu div

Fermé
jon1234 - 22 janv. 2017 à 20:36
hcp7kuz Messages postés 243 Date d'inscription mardi 18 août 2015 Statut Membre Dernière intervention 23 mars 2019 - 2 mars 2017 à 13:15
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 !

3 réponses

jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
22 janv. 2017 à 23:50
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
23 janv. 2017 à 10:35
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 mardi 18 août 2015 Statut Membre Dernière intervention 23 mars 2019 23
2 mars 2017 à 13:15
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