- How can I create/export SVG's that contain
stroke
, stroke-width
, stroke-dasharray
, and stroke-dashoffset
fields?
With Inkscape this is really easy:
Create
stroke: Draw or import your object, select the object, then simply pick a color from the palette while holding Shift
or set the stroke directly in the "Fill and Stroke" menu (Shift+Ctrl+F
). The default stroke width will be 1px.
stroke-width: Adjust the stroke width to your liking in the "Fill and Stroke" menu.

- stroke-dasharray: Choose a pattern that you like from the "Dashes" dropdown or create your own pattern by choosing "Custom".

- stroke-dashoffset: Adjust the number next to the dropdown to your liking. You will see the dashes wander around the shape.

Export
- Hit "File" > "Save" and choose "Plain SVG" as the format. The resulting file will be a clean SVG representation with the properties you were looking for.
Example
Saving these three shapes

as a plain SVG gives you:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
id="svg197572"
viewBox="0 0 840.00001 280"
height="280"
width="840">
<defs
id="defs197574" />
<metadata
id="metadata197577">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(87.913618,-29.053558)"
id="layer1">
<g
transform="translate(-5.1968614,1.7322813)"
id="g198176">
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0088aa;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:15.99999952, 7.99999977;stroke-dashoffset:24;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="path198120"
d="m 660.77938,211.25626 c -9.4418,16.35367 -2.12269,65.32688 -19.37371,73.00753 -17.25102,7.68065 -48.74777,-30.52798 -67.21871,-34.4541 -18.47094,-3.92612 -62.7855,18.16832 -75.42109,4.13508 -12.63559,-14.03325 13.96995,-55.79555 11.99608,-74.5757 -1.97388,-18.78014 -36.68089,-54.09824 -27.23909,-70.45191 9.44179,-16.353669 57.38167,-3.95556 74.63269,-11.63621 17.25102,-7.680648 40.11546,-51.602873 58.5864,-47.676754 18.47094,3.92612 21.49388,53.350874 34.12947,67.384124 12.63558,14.03324 61.47361,22.20591 63.44748,40.98605 1.97387,18.78015 -44.09773,36.92822 -53.53952,53.28189 z" />
<path
d="m 397.92226,211.25626 c -9.4418,16.35367 -2.12269,65.32688 -19.37371,73.00753 -17.25101,7.68065 -48.74777,-30.52798 -67.2187,-34.4541 -18.47094,-3.92612 -62.78551,18.16832 -75.4211,4.13508 -12.63558,-14.03325 13.96995,-55.79555 11.99608,-74.5757 -1.97387,-18.78014 -36.68089,-54.09824 -27.23909,-70.45191 9.44179,-16.353669 57.38167,-3.95556 74.63269,-11.63621 17.25102,-7.680648 40.11547,-51.602873 58.58641,-47.676754 18.47093,3.92612 21.49387,53.350874 34.12946,67.384124 12.63559,14.03324 61.47361,22.20591 63.44748,40.98605 1.97387,18.78015 -44.09773,36.92822 -53.53952,53.28189 z"
id="path198124"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0088aa;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0088aa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:16, 8;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="path198126"
d="m 135.06512,211.25626 c -9.4418,16.35367 -2.12269,65.32688 -19.37371,73.00753 -17.251014,7.68065 -48.747765,-30.52798 -67.218704,-34.4541 -18.470939,-3.92612 -62.785503,18.16832 -75.421091,4.13508 -12.635588,-14.03325 13.969949,-55.79555 11.996077,-74.5757 -1.973873,-18.78014 -36.680888,-54.09824 -27.239093,-70.45191 9.441795,-16.353669 57.381673,-3.95556 74.632691,-11.63621 17.251019,-7.680648 40.115467,-51.602873 58.586406,-47.676754 18.470944,3.92612 21.493874,53.350874 34.129464,67.384124 12.63559,14.03324 61.47361,22.20591 63.44748,40.98605 1.97388,18.78015 -44.09773,36.92822 -53.53952,53.28189 z" />
</g>
</g>
</svg>
Check the three <path ... />
elements to see the stroke and dash properties.
- How can I create a flattened SVG that still animate the outer borders?
I think you're mixing several concepts here: If by "flattened" you mean "no layers" you would have to move all objects into one layer. This is completely independent of whether certain shapes are closed paths or not. You seem to have run "Trace Bitmap", which (depending on the settings/filter) gives you several objects that may seem like different "layers" but are in fact just individual objects containing (possibly noisy) shape geometry, all of them in a single layer.
So, to clear things up:
In SVG, layers are distinct overlapping "canvases" whose visibility can be toggled individually. To see layers in Inkscape, hit Shift+Ctrl+L
. For a simple SVG that you want to use on the web, I would only use a single layer and put all objects in there. Most likely you will only have one layer called "Layer 1". That's fine.
When you run "Trace Bitmap" (e.g. with "Multiple Scans: Colors") you end up with a group of objects. You can ungroup this with Shift+Ctrl+G
, then separate (move F1
) and inspect the individual objects. They will most likely contain the vector traces of differently-colored shapes. To edit these objects you need to enter "Edit paths by nodes" (F2
), then you may e.g. select (draw a selection rectangle) and delete noisy nodes (Ctrl+Del
). If you feel like there is just a lot of noise or that the objects provide a very bad separation of the original, you may want to re-run "Trace Bitmap" with different settings or simply draw the vector shapes manually.
You can join any objects that are paths (like the results from "Trace Bitmap") into a single object by selecting both of them and choosing "Path" > "Union" (or any other Boolean operation, for that matter). If one of the objects is not a path convert it with "Path" > "Object to path". If that doesn't work, you might be dealing with a group of paths, which you need to ungroup first and then convert individually. Note: An object can only have one fill and one stroke color. So when you join two objects, they will assume the colors of either the first or the second object.
No matter wether you obtain your vector shapes from tracing or manual drawing, in the end you want to have a few clean objects with closed paths. Then you can assign stroke
, stroke-width
, stroke-dasharray
and stroke-dashoffset
. It's ok if some paths are open, but note that the fill will look funny as it "cuts across" from one end point of the shape to the other, so you should remove the fill for these paths.
With such a cleaned-up shape you should be able to easily animate the desired properties.
- Generally, what's the best tool for creating SVG's?
- Haha, it's impossible to give an objective answer to that question. I have used both Illustrator (a while ago) and Inkscape (exclusively for the past couple years). In my personal opinion, Inkscape is definitely not intuitive to learn if you're coming from Illustrator. However, it's also not horribly complicated to learn. Once you have mastered it, it's absolutely amazing and definitely the best tool for creating SVGs. It was built around SVG, meaning there is a 1:1 correspondence between the Inkscape tools and the SVG features. And it is free and open source, which - if a software is mature enough, like Inkscape - always scores bonus points with me. But like I said - personal opinion :D.
I hope that more or less answers your question(s).