【发布时间】:2015-06-19 03:52:15
【问题描述】:
我为我的网站徽标创建了一个 SVG 幻影。我制作了一个 CSS 动画,所以当用户悬停徽标时,幽灵开始浮动。
一切正常,除了当它被悬停时,幽灵只是回到原来的位置。当它返回到translateY(0) 时是否可以让它也有动画?我自己尝试了一个解决方案,但它不起作用。
示例如下:
@keyframes float {
100% {
transform: translateY(-8px);
}
}
@keyframes bob {
0% {
transform: translateY(-8px);
}
100% {
transform: translateY(0);
}
}
@keyframes sink {
100% {
transform: translateY(0);
}
}
#logo svg {
margin: 20px;
overflow: visible;
}
#logo #ghost {
animation-name: sink;
animation-duration: 0.3s;
animation-timing-function: ease-out;
animation-delay: 0s;
animation-direction: normal;
animation-iteration-count: 1;
animation-fill-mode: forwards;
}
#logo:hover #ghost {
animation-name: float, bob;
animation-duration: 0.3s, 0.7s;
animation-timing-function: ease-out, ease-in-out;
animation-delay: 0s, 0.3s;
animation-direction: normal, alternate;
animation-iteration-count: 1, infinite;
animation-fill-mode: forwards;
}
<div id="logo">
<svg width="100" height="100">
<g id="ghost">
<rect fill="red" width="100" height="100" />
</g>
</svg>
</div>
【问题讨论】:
-
据我所知...这在 css 动画中是不可能的。例如...如果您要制作一些动画,在悬停时通过彩虹色褪色...然后您拉开——它怎么知道如何恢复原始颜色?我相信这是一个更复杂的函数,我建议使用 javascript 以及像velocity.js 这样的库来提供帮助。
-
我在问题中添加了一个演示。
-
感谢您的帮助@sheriffderek。您的示例效果很好,但它并不完全是我想要实现的。我的幽灵并不总是无限漂浮,只有当它悬停时。它也是一个内联 SVG,所以我不能为
元素使用诸如位置之类的属性。
标签: css svg css-animations