Polygon in Pfaddaten konvertieren

Avatar of Chris Coyier
Chris Coyier am

Ich musste das in letzter Zeit ein paar Mal tun, also dachte ich, ich speichere die Methode. StackOverflow hat eine Methode, die hervorragend funktioniert

[].forEach.call(polys,convertPolyToPath);

function convertPolyToPath(poly){
  var svgNS = poly.ownerSVGElement.namespaceURI;
  var path = document.createElementNS(svgNS,'path');
  var points = poly.getAttribute('points').split(/\s+|,/);
  var x0=points.shift(), y0=points.shift();
  var pathdata = 'M'+x0+','+y0+'L'+points.join(' ');
  if (poly.tagName=='polygon') pathdata+='z';
  path.setAttribute('id',poly.getAttribute('id'));
  path.setAttribute('fill',poly.getAttribute('fill'));
  path.setAttribute('stroke',poly.getAttribute('stroke'));
  path.setAttribute('d',pathdata);

  poly.parentNode.replaceChild(path,poly);
}

Michael Schofield hat einen Pen erstellt, um es schnell zu erledigen

Siehe den Pen SVG Polygon in Pfad umwandeln von Michael Schofield (@michaelschofield) auf CodePen.

Sie fügen Ihr eigenes Polygon in das obige SVG ein und es wird dann durch einen Pfad im DOM ersetzt. Sie können die Pfad-Daten mit DevTools auslesen.

Der Zweck ist zum Beispiel, dass Sie von einer Form mit geraden Linien zu einer Form mit gekrümmten Linien animieren möchten. SVG-Software-Tools geben erstere als Polygon aus, was eine andere Art von Daten ist, die sich nicht nativ in die Pfadsyntax animieren lässt.