SVG路径曲线在相反方向上动画

时间:2016-09-21 13:08:39

标签: css animation svg

我在adobe illustrator中创建了一个svg并使用了由此生成的代码。我试图动画svg绘图。我的svg元素:

<svg width="100px" height="100px">
    <path fill="none" d="M5,60c0-24.873,20.127-45,45-45" />
    <path fill="none" d="M95,60c0-24.873-20.127-45-45-45" />
</svg>

第一条曲线是顺时针方向的动画,我希望第二条曲线是逆时针方向的动画。你可以在问题的最后看到演示片段。

请解释我如何以顺时针方向为第二条路径设置动画。还请解释两条路径的曲线数据是否可以。感谢

svg {
  width: 300px;
}
svg path {
  fill-opacity: 0;
  stroke: #50514F;
  stroke-width: 5;
  stroke-dasharray: 870;
  stroke-dashoffset: 870;
  animation: draw 10s infinite linear;
}
@keyframes draw {
  to {
    stroke-dashoffset: 0;
  }
}
<svg width="100px" height="100px">
  <path fill="none" d="M5,60c0-24.873,20.127-45,45-45" />
  <path fill="none" d="M95,60c0-24.873-20.127-45-45-45" />
</svg>

1 个答案:

答案 0 :(得分:2)

第二条路径以逆时针方式开始,因为起点定义在终点的右侧。当您的要求只是圆弧时,为什么要使用复数三次贝塞尔曲线? 您可以使用椭圆曲线,这些曲线太简单,无法使用和处理。将您定义的路径更改为这两个路径定义,您将实现您想要的目标:

{{1}}

M 旁边的坐标是您的起点。 A 旁边的值分别表示椭圆曲线的水平和垂直半径(两者都将与您想要的相同)圆形曲线)。之后的 0 表示您想要旋转椭圆的角度。之后,您必须提供两个以逗号分隔的标记。第一个标记表示您是要采用最短( 0 )还是最长( 1 < / strong>)起点和终点之间的路径。第二个标志表示是要采用逆时针( 0 )路径还是顺时针( 0 )开始点和结束点之间的路径(您可以更改两个标志以查看更改)。最后一个坐标是您的结束点,第一个路径为 55,10 105,60 为第二个。