1. 通过yqnn的SVG路径编辑器进行转换
重写您的路径数据d
属性的简单方法是将字符串插入yqnn的SVG路径编辑器中,并
切换缩小选项复选框两次。
所有省略的命令字母(用于重复和隐式命令)都将添加到更易读的d
字符串中。
2. 通过getPathData()
进行转换
getPathData()
尚未得到任何主流浏览器的支持。
因此,您需要像Jarek Foksa的pathdata polyfill.这样的polyfill。
- 使用
getPathData()
解析路径。
所有重复或隐式命令将被拆分为单独的命令:
隐式相对l
lineto:
m 0,0 38.913,455.481
// result:
M 0,0 l 38.913,455.481
d
属性中的第一个 m
命令实际上总是绝对的。由于我们已经转换了隐式的 l
命令,因此我们可以将第一个 moveto 更改为大写字母 M
命令字母(可以方便路径连接)。
重复的 c
(三次贝塞尔曲线)。
c 7.122 83.37 6.816 164.779 13.005 236.077
18.924 218.078 232.099 308.663 268.399 493.918
16.874 86.119 -37.253 229.874 -42.144 323.022
-7.527 143.381 69.579 142.669 104.526 244.648
// result:
c 7.122 83.37 6.816 164.779 13.005 236.077
c 18.924 218.078 232.099 308.663 268.399 493.918
c 16.874 86.119 -37.253 229.874 -42.144 323.022
c -7.527 143.381 69.579 142.669 104.526 244.648
- 使用
setPathData()
应用 pathData
let pathData = path.getPathData();
path.setPathData(pathData);
output.value = path.getAttribute('d');
svg{
height:20em
}
textarea{
width:100%;
min-height:20em;
}
<script src="https://cdn.jsdelivr.net/npm/path-data-polyfill@1.0.4/path-data-polyfill.min.js"></script>
<svg viewBox="0 0 382.7 1753.15">
<path id="path" d="m 0,0 38.913,455.481 c 7.122,83.37 6.816,164.779 13.005,236.077 18.924,218.078 232.099,308.663 268.399,493.918 16.874,86.119 -37.253,229.874 -42.144,323.022 -7.527,143.381 69.579,142.669 104.526,244.648"" fill="none" stroke="#000000" stroke-width="2" />
</svg>
<textarea id="output"></textarea>
3. 手动方法
你只需要知道每个命令类型的值/参数数量,并相应地将命令值拆分成块:
M
:2个值 - 后续值被视为隐式的L
linetos。
L
,T
:2个值
V
,H
:1个值
C
:6个值
S
,Q
:4个值
A
:7个值