css - 使用 CSS 动画化 SVG

标签 css svg jquery-animate

我有一个可以正确设置动画的简单线条 SVG。问题是在第一次加载 SVG 路径时显示然后在开始之前消失。我尝试将 st1 和 st2 上的不透明度设置为 0,然后将关键帧设置为不透明度 1。这种方法有效,但 SVG 然后在它之后消失正在运行。

我是不是漏掉了一些简单的东西?

<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 viewBox="0 0 485 500.9" style="enable-background:new 0 0 485 500.9;" xml:space="preserve">
<style type="text/css">
.st0{clip-path:url(#SVGID_2_);fill:none;stroke:#FFFFFF;stroke-dasharray: 1000;
animation: draw 4s normal ease-in;}
.st1{clip-path:url(#SVGID_2_);fill:none;stroke:#FFFFFF;stroke-dasharray: 1000;
animation: draw 4s normal ease-in;animation-delay: 1s;}
.st2{clip-path:url(#SVGID_2_);fill:none;stroke:#FFFFFF;stroke-dasharray: 1000;
animation: draw 4s normal ease-in;animation-delay: 3s;}
@keyframes draw {
from {
stroke-dashoffset: -1000;
}
to {
stroke-dashoffset: 0;
}
}
</style>
<g>
<defs>
    <rect id="SVGID_1_" x="-0.1" y="0" width="485" height="501"/>
</defs>
<clipPath id="SVGID_2_">
    <use xlink:href="#SVGID_1_"  style="overflow:visible;"/>
</clipPath>
<path class="st0" d="M0.4,97.4c0-14.2,14.2-14.2,14.2-14.2H100l5.1,0h86.3c0,0,14.2,0,14.2-14.2V36.4V0"/>
<path class="st1" d="M207.5,236.3l0-31.3c0,0,0-14.2-14.2-14.2h-15.1l-142.8,0.1H14.6c-14.2,0-14.2-14.2-14.2-14.2V103"/>
<path class="st2" d="M484.9,500.5H221.8c-14.2,0-14.2-14.2-14.2-14.2l-0.1-242.6"/>
</g>
</svg>

参见: https://jsfiddle.net/suLkr4po/

我如何重组它,使每条路径在另一条路径从上到下完成后进入?

最佳答案

animation-fill-mode: backwards 添加到动画元素的样式中。这将在动画开始之前应用起始值。

关于css - 使用 CSS 动画化 SVG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47028274/

相关文章:

javascript - 单击生成的按钮,而循环不起作用

html - 淡化一个 div 溢出到相邻的 div

javascript - SVG 的 NVD3 样式

javascript - 如何将多个 SVG 居中到同一点?

css - 仅当文本适合时,如何使用 d3.js 在 SVG 矩形中显示文本?

jquery - 向右滑动子菜单

jquery - 根据窗口宽度和窗口调整大小启用功能

jquery - 在 JQuery 中对样式进行动画处理时没有结果

javascript - 使用 jQuery(或 Javascript)将状态更改动画化为 'disabled'

javascript - 如何使用 Javascript 和 CSS 显示自定义打印/分页预览(带页面框)?