读懂 "M 10 10 L 90 90":path 微语言
path 字符串是一支画笔的移动记录:每个字母是一条命令,后面跟它要的坐标。画笔永远记着「当前点」,每条命令从当前点出发、画完把当前点挪到终点。就这么一套只有 10 个动词的微语言,撑起了 SVG 的 <path d>、CSS 的 path(),也是理解
shape() 的基础。
1 · 逐命令走一遍
选个图形,点 ▶ 或直接点下方命令,看当前段加粗高亮、贝塞尔曲线拉出橙色控制点辅助线:
大写 vs 小写 = 绝对 vs 相对。 L 70 130 画到坐标 (70, 130);l 70 130 画到「当前点再往右 70、往下 130」。上面「箭头(全小写)」图形整条都是相对命令——虚线框的 token 就是小写。还有一条简写规则:一条命令后面跟了多组坐标时自动重复(M
后的多余坐标按 L 算),所以 M 0 0 10 10 20 5 其实是三条命令。
2 · 10 个动词速查
3 · 它在 CSS 里的写法
CSS 不能裸写 path 串,要包进 path() 函数——一个带引号的字符串,前面还能加可选的 fill-rule(在 clip-path 进阶一页细讲):
坐标没有单位,也不会缩放。 path() 里的数字按 px 解释,参照盒子的左上角为原点——盒子变大,形状不会跟着变大。这是它最大的短板,解法见 shape() 与 url(#clipPath) 两页。