SVG标记不起作用

fro*_*tto 4 javascript svg marker

我在javascript中创建了一个标记,如下所示:

var marker = document.createElementNS(SVG.ns, "marker");
marker.setAttribute("markerWidth", "3");
marker.setAttribute("markerHeight", "3");
marker.setAttribute("id", "mkrCircle");
marker.setAttribute("viewBox", "0 0 12 12");
marker.setAttribute("orient", "auto");
marker.setAttribute("stroke", "#000000");
marker.setAttribute("stroke-width", "2");
marker.setAttribute("fill", "#ffffff");
marker.setAttribute("refX", "12");
marker.setAttribute("refY", "6");

var mkrContent = document.createElementNS(SVG.ns, "circle");
mkrContent.setAttribute("r", "5");
mkrContent.setAttribute("cx", "6");
mkrContent.setAttribute("cy", "6");

marker.appendChild(mkrContent);
defs.appendChild(marker); // <-- defs is svg defs element
Run Code Online (Sandbox Code Playgroud)

我用它作为一条路:

<path marker-mid="url(#mkrCircle)" d="M0,0L100,100" stroke-width="3"></path>
Run Code Online (Sandbox Code Playgroud)

但它根本没有出现在路径上,为什么?
提前致谢

Pau*_*eau 9

导致标记不起作用的原因有三个:

  1. 您没有为路径指定笔触颜色,因此它不会显示(标记也不会显示).

  2. marker-mid当路径没有任何中点时,您已指定了标记.它只是一个单线段.尝试d="M0,0L100,100,200,200"添加中点.

  3. 最后你的markerWidth并且markerHeight对于以(6,6)和半径5为中心的圆来说太小(3x3).试试markerWidth="12" markerHeight="12".

http://jsfiddle.net/fP5EY/

  • `marker-mid` 不适用于行。标记放置在具有多个点(路径、折线等)的元素的起点、中点和终点。`marker-mid` 中的“mid”指的是多点元素(路径、折线等)中的 2 到 n-1 个点。因为一条线只有起点和终点,所以你只能使用`marker-start`和`marker-end`。如果你想在你的线中间有一个标记,你需要把它分成两行,或者使用折线。https://jsfiddle.net/dqoL07cn/1/ (2认同)