Salut
J'aimerais que mon sous-menu qui se déroule par un :hover se referme lors du clic sur un des items ; et ce, surtout sur mobile... (Sur desktop il suffit de sortir le pointeur du menu mais sur mobile il y a besoin de cliquer en dehors.)
Structure du sous-menu déroulant :
CSS (je n'ai pas tout mis) :
Pour le javascript "fermermenu()" j'ai essayé :
ou :
ainsi que les deux mélangés.
Les deux méthodes marchent sur desktop, mais sur mobile ça ne veut pas ! On voit le sous-menu disparaitre, mais il réapparait dès que "pointer-events: none;" est annulé ou ".sousmenuvisible" revient (l'élément sélectionné ne semble pas s'annuler entre deux).
La réversion de ces états étant nécessaire pour le menu soit à nouveau opérationnel.
Comment puis-je faire pour qu'un javascript fasse que le dernier item touché/sélectionné soit oublié ?
Merci d'avance
Modifié par kerlutinoec (04 Jan 2022 - 11:26)
J'aimerais que mon sous-menu qui se déroule par un :hover se referme lors du clic sur un des items ; et ce, surtout sur mobile... (Sur desktop il suffit de sortir le pointeur du menu mais sur mobile il y a besoin de cliquer en dehors.)
Structure du sous-menu déroulant :
<div class="rubrique visible">
<a href="#nogo">
Informations
</a>
<div class="sousmenu sousmenuvisible">
<div class="pagesousmenu">
<a href="#infos1"
onclick="montrer('infos1');fermermenu();">
infos1
</a>
</div>
<div class="pagesousmenu">
<a href="#infos2"
onclick="montrer('infos2');fermermenu();">
infos2
</a>
</div>
<div class="pagesousmenu">
<a href="#infos3"
onclick="montrer('infos3');fermermenu();">
infos3
</a>
</div>
<div class="pagesousmenu">
<a href="#infos4"
onclick="montrer('infos4');fermermenu();">
infos4
</a>
</div>
</div>
</div>
CSS (je n'ai pas tout mis) :
.rubrique:hover .sousmenuvisible {
opacity: 1;
visibility: visible;
top: 46px;
transition: all 0.25s ease;
}
.rubrique_unhover { pointer-events: none; }
Pour le javascript "fermermenu()" j'ai essayé :
const y = document.querySelectorAll("div.sousmenu");
y[0].classList.remove("sousmenuvisible");
setTimeout(() => { y[0].classList.add("sousmenuvisible"); }, 300);
ou :
const z = document.querySelectorAll("div.rubrique");
z[0].classList.add("rubrique_unhover");
setTimeout(() => { z[0].classList.remove("rubrique_unhover"); }, 300);
ainsi que les deux mélangés.
Les deux méthodes marchent sur desktop, mais sur mobile ça ne veut pas ! On voit le sous-menu disparaitre, mais il réapparait dès que "pointer-events: none;" est annulé ou ".sousmenuvisible" revient (l'élément sélectionné ne semble pas s'annuler entre deux).
La réversion de ces états étant nécessaire pour le menu soit à nouveau opérationnel.
Comment puis-je faire pour qu'un javascript fasse que le dernier item touché/sélectionné soit oublié ?
Merci d'avance
Modifié par kerlutinoec (04 Jan 2022 - 11:26)