Jag har fått göra detta några gånger nyligen så jag tänkte att jag skulle spara metoden. StackOverflow har en metod som fungerar bra:
().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 gjorde en penna för att göra det snabbt:
Se Pen Convert Black SVG Polygon to Path av Michael Schofield (@michaelschofield) på CodePen.
Du placerar din egen polygon i SVG ovan och sedan ersätts den med en sökväg i DOM. Du kan DevTools inspektera för att få ut sökdata.
Syftet är till exempel att du försöker animera från en form med raka linjer till en form med böjda linjer. SVG-programvaruverktyg matar ut det förra som en polygon, vilket är en annan typ av data som inte kan animeras ursprungligen till banans syntax.