Je travaille sur un menu pour mon site. C'est déjà fait, il y a juste un petit détail qui ne cesse de m'énerver. Jetez un oeil à l'extrait ci-dessous. Lorsque je survole l'élément parent, l'enfant glisse avec la transition. Mais une fois que la souris quitte l'élément parent/enfant, l'élément enfant va simplement disparaître.La transition CSS se termine trop tôt lorsque la souris quitte l'élément
J'ai déterminé que lorsque la souris quitte l'élément parent/enfant, l'élément enfant se déplace rapidement hors de la vue (left: -9999px;
) avant le début de la transition vers le haut. Comment puis-je faire en sorte que lorsque la souris quitte le menu, l'élément glisse avec le même type de transition? Existe-t-il une solution uniquement CSS ou dois-je également utiliser jQuery?
ul {
list-style: none;
padding: 0;
}
li {
width: 180px;
}
#menu ul ul {
left: -9999px;
position: absolute;
background: red none repeat scroll 0 0;
}
#menu li:hover>ul {
left: auto;
}
#menu ul ul li {
height: 0;
transition: height 0.2s ease 0s;
}
#menu ul ul ul {
margin-left: 100%;
top: 0;
}
#menu ul li:hover>ul>li {
height: 32px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav id="menu">
<ul>
<li>Parent Item
<ul>
<li>Child Item
<ul>
<li>Child Child Item</li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
Il est possible en CSS pur, mais vous aurez besoin d'utiliser l'animation d'images clés au lieu de transition - images clés vous permettent d'enchaîner plusieurs animations ensemble à partir d'une ligne de temps, de sorte que vous pouvez avoir la menu glisser d'abord, puis placez-le à gauche après l'animation de la diapositive est terminée. – delinear
(Je voudrais aider avec un exemple, sauf que je suis sur le point d'aller faire l'école, excuses!) – delinear