26: 强制形状变为路径

这有点深奥,我只需要自己做一次,发现它很令人困惑,所以我想做一个关于它的完整视频。

问题是,并非所有 SVG 中的东西都是 <path><path> 很棒,因为它可以任何东西。但它 的语法 比任何其他形状都复杂。因此(也许出于这个原因?)Illustrator 总是使用最合适的元素在 SVG 中输出形状。矩形是 <rect>,其他仅由直线组成的形状是 <polygon>,或者如果它是一个开放的形状,则为 <polyline>,等等。

这很好,除了这些形状的 DOM 方法不同。路径元素有一个名为 getTotalLength() 的方法,它可以让你知道路径的长度。这很酷,有时也很有用,但你不能只在 <path> 上做,其他元素不行。

你可能想要知道该长度的一个原因是,你打算对它进行动画处理,使形状“自行绘制”——一种很酷的设计效果(示例集合)。你可以在 CSS 中做到这一点,但是使用 一些 JavaScript 来应用该 CSS 是很不错的,这样它每次都会以完美的距离进行动画处理。

所以假设你想做那个绘制效果,但该形状是 <polygon>,所以 JavaScript 失败了。你可以将该多边形变成路径,而不会在视觉上改变它,方法是简单地向它添加一个具有贝塞尔控制点的点。也就是说,用钢笔工具点击并拖动,使控制点出现并与已有的线条对齐。该点的存在将使其在输出中变为 <path>

如果你经常这样做,有一个名为 Poly2Path 的工具可以工作,并且不需要那个多余的点。