我已经将一个带有纯 CSS 修复的 CodePen 和一个带有 2 行 jQuery 的 CodePen 放在一起来修复页面加载问题。继续阅读以了解更简单版本的 2 个解决方案。
https://codepen.io/MateoStabio/pen/jOVvwrM
如果您正在搜索如何仅使用 CSS 执行此操作,Xaltar 的答案很简单、直接,并且是正确的解决方案。唯一的缺点是鼠标移出的动画将在页面加载时播放。发生这种情况是因为要使这项工作正常进行,您需要使用 OUT 动画和:hover
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;}
}
有些人发现这个解决方案在页面加载时没有用。对我来说,这是完美的解决方案。但是我用这两种解决方案制作了一个 Codepen,因为在不久的将来我可能会需要它们。
如果您不希望页面加载时出现 CSS 动画,则需要使用一个很小的 JS 脚本,仅在元素第一次悬停后使用 OUT 动画设置元素的样式。我们将通过向.wasHovered
元素添加一个类并使用 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;}
}
瞧!您可以在我的 codepen 上找到所有这些以及更多内容,详细显示带有 SVG 徽标悬停动画的 2 个选项。
https://codepen.io/MateoStabio/pen/jOVvwrM