如何使用单路径绘制 SVG 曲线?

Posted

技术标签:

【中文标题】如何使用单路径绘制 SVG 曲线?【英文标题】:How to draw SVG curved using single path? 【发布时间】:2018-01-11 01:03:14 【问题描述】:

我想要的是下图 -

我对此有 3 个相关问题

1.我们可以用single path.绘制整个画布吗?

2.如果我们只能用多条路径来绘制整体,给他们动画会不会方便?

3.在这两种情况下,任何人都可以用样本指导正确的方法吗?

这就是我目前所了解的......正如你所见,我不是SVG 的专家,当然,你可以用一个圆圈来表示大圆点。提前谢谢你。

svg 
  width: 100%;


.straightLine 
  height: 3000px;
  position: relative;


.st0 
  fill: none;
  stroke-dashoffset: 3px;
  stroke: #000000;
  stroke-width: 5;
  stroke-miterlimit: 10;
<div class="straightLine">
  <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 1280 1000" style="enable-background:new 0 0 1280 800;" xml:space="preserve">
	<g class="all">
	<path id="line1" class="st0" stroke-dasharray="10,9" d="M 35 -17 C 0 190 50 83 600 109 "/>
	<path id="line1" class="st0" stroke-dasharray="10,9" d="M 600 109  c 64.9 0 90.4 40.5 90.4 90.4"/>
	</g>
  </svg>
</div>

【问题讨论】:

您最好在专门的程序(如 Illustrator 或 GIMP)中绘制路径,然后将其导出为 SVG。手绘这些线条是可能的,但也非常复杂。 @Terry 我自己在 illustrater 中创建了该图像,但这不是我想要的。我有一些动画要使用这个&lt;path&gt; 在页面的滚动上做,这就是为什么我正在寻找一个 CSS 选项。所以如果可以帮助我.ty 你想做什么样的动画?你的问题不清楚。您想为路径设置动画吗?或者沿路径为圆圈的位置设置动画? @Terry 我想要的是使用连接我的一些图像的页面滚动来绘制线条。像这样 - ***.com/a/33054738/7629714 您可以使用stroke-dashoffset 简单地为线条绘制设置动画,而根本不需要更改路径:css-tricks.com/svg-line-animation-works。换句话说,您绘制完整路径,并根据滚动位置确定偏移值。 【参考方案1】:

使用类似的东西:

<path d="M 20 0 v 20 a 30 30 0 0 0 30 30 h 600 a 40 40 0 0 1 0 80 h -140 a 30 30 0 0 0 0 60 h 200 a 40 40 0 0 1 0 80 h -100 a 30 30 0 0 0 -30 30 v 20" />

如the documentation 所示,路径可以包含任意数量的组件。

总结一下:

M/m    Move current position
L/l    Draw a line
H/h    Draw a horizontal line
V/v    Draw a vertical line
C/c    Draw a cubic Bezier
Q/q    Draw a quadratic Bezier
A/a    Draw a circular/elliptal arc
Z/z    Close path

一般来说,大写指令指定绝对坐标,小写指令指定相对坐标。

【讨论】:

还有一件事,对于圆点,我们应该在&lt;svg&gt; 中使用&lt;circle&gt; 还是有办法将它与&lt;path&gt; 结合起来呢? 实心圆圈需要一个新元素。是使用 &lt;circle&gt; 还是使用另一个 &lt;path&gt; 取决于您。 我们怎么能position它在同一个地方。我们可以使用position: absolute 或者&lt;svg&gt; 中的其他方式 类似&lt;circle cx="400" cy="50" r="10" /&gt;cx = center x, cy = center y, r = radius.

以上是关于如何使用单路径绘制 SVG 曲线?的主要内容,如果未能解决你的问题,请参考以下文章

如何用svg在网页中画一条带箭头的连接线

SVG路径

如何使用 Java 离散化 SVG 路径?

使用 QML 绘制 SVG

如何一次滚动绘制每个 SVG 路径(按时间顺序)?

SVG 基础教程