html - SVG 动画在悬停时重置

标签 html css svg

我有一个 svg 动画,

动画运行流畅,我将它设置为 animation-fill-mode: 转发到它在完成动画后保持原样。

目前,在 svg html 中,我有

stroke="none"

然后在@keyframes css 中,我有它:

from{ stroke: none; }
to { stroke: #fff; }

完成动画后,我希望笔触在 :hover 上改变颜色,它确实做到了。

但是一旦我将光标移开,动画就会重新开始。

我如何让 SVG 在悬停完成后立即返回到它的#FFF 笔画而不触发动画?

Here is my Codepen

最佳答案

您已经使用了 animation-timing-function: ease,但是在值 none#fff 之间没有平滑的过渡 - 一个是关键字,另一个是颜色值。要从“不可见”到“可见”,请改用 opacity 属性并定义 fill 独立于动画。

如果这样做,您可以在动画后将 opacity 保留为 1,并且仅将 fill 值交换为悬停。不要在悬停期间关闭动画。

@keyframes shield {
  from {
    opacity: 0; }
  to {
    opacity: 1; } }
#outer-left, #outer-btm-left, #outer-btm-right, #outer-right, #outer-top {
  animation-name: shield;
  animation-duration: 1s;
  animation-iteration-count: 1;
  animation-timing-function: ease;
  animation-fill-mode: forwards;
  stroke:#fff;
  opacity:0;
  }

#outer-left:hover {
  stroke: red;
}

#outer-btm-left:hover {
  stroke: red;
}

关于html - SVG 动画在悬停时重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47337905/

相关文章:

javascript - 代码可以在 jsfiddle 上运行,但不能在我的网站上运行?

javascript - 使用sessionStorage代替共享服务可以吗

html - 如何控制 CSS 箭头大小

svg - 将D3.js移植到其他语言

javascript - 提交联系表 7 后更改 Div 背景

html - 如何使所有 block 引用具有相同的高度?

jquery - Colorbox Lightbox - 删除 IFrame 的垂直滚动条

javascript - d3 如何在文本后面的对象上触发事件

html - 关于 svg 的流模型的疑问

javascript - 使用外部应用程序访问 html 表单字段