J'ai créé un CodePen avec un correctif uniquement en CSS et un autre avec 2 lignes de jQuery pour résoudre le problème de chargement sur la page. Continuez à lire pour comprendre les 2 solutions dans une version plus simple.
https://codepen.io/MateoStabio/pen/jOVvwrM
Si vous cherchez comment faire cela avec CSS uniquement, la réponse de Xaltar est simple, directe et constitue la bonne solution. Le seul inconvénient est que l'animation de la sortie de la souris sera jouée lors du chargement de la page. En effet, pour que cela fonctionne, vous devez définir le style de votre élément avec l'animation OUT et la balise :hover
avec l'animation IN.
svg path{
animation: animateLogoOut 1s;
}
svg:hover path{
animation: animateLogoIn 1s;
}
@keyframes animateLogoIn {
from {stroke-dashoffset: -510px;}
to {stroke-dashoffset: 0px;}
}
@keyframes animateLogoOut {
from {stroke-dashoffset: 0px;}
to {stroke-dashoffset: -510px;}
}
Certaines personnes ont trouvé que cette solution était inutile car elle jouait sur le chargement de la page. Pour moi, c'était la solution parfaite. Mais j'ai fait un Codepen avec les deux solutions car j'en aurai probablement besoin dans un futur proche.
Si vous ne voulez pas de l'animation CSS au chargement de la page, vous devrez utiliser un tout petit script de JS qui ne stylise l'élément avec l'animation OUT qu'après le premier survol de l'élément. Nous ferons cela en ajoutant une classe de .wasHovered
à l'élément et donne un style à la classe ajoutée avec l'animation OUT.
jQuery :
$("svg").mouseout(function() {
$(this).addClass("wasHovered");
});
CSS :
svg path{
}
svg.wasHovered path{
animation: animateLogoOut 1s;
}
svg:hover path{
animation: animateLogoIn 1s;
}
@keyframes animateLogoIn {
from {stroke-dashoffset: -510px;}
to {stroke-dashoffset: 0px;}
}
@keyframes animateLogoOut {
from {stroke-dashoffset: 0px;}
to {stroke-dashoffset: -510px;}
}
Et voilà ! Vous pouvez trouver tout cela et plus sur mon codepen montrant en détail les 2 options avec une animation de survol du logo SVG.
https://codepen.io/MateoStabio/pen/jOVvwrM