【问题标题】:SVG Marker does not workSVG 标记不起作用
【发布时间】:2013-08-10 13:19:18
【问题描述】:

我在 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

我用它作为路径:

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

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

【问题讨论】:

    标签: javascript svg marker


    【解决方案1】:

    标记不工作的三个原因:

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

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

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

    http://jsfiddle.net/fP5EY/

    【讨论】:

    • marker mid 对路径正常工作,但对线路不起作用...请检查一下jsfiddle.net/dqoL07cn
    • marker-mid 不适用于行。标记放置在具有多个点(路径、折线等)的元素的起点、中间和终点。 marker-mid 中的“中间”是指多点元素(路径、折线等)中的 2 到 n-1 个点。因为一条线只有起点和终点,所以只能使用marker-startmarker-end。如果你想在你的线条中间有一个标记,你需要把它分成两条线,或者使用折线。 jsfiddle.net/dqoL07cn/1
    猜你喜欢
    • 2016-09-16
    • 2023-03-31
    • 2016-08-04
    • 2012-06-21
    • 2017-04-29
    • 2015-04-29
    • 2012-07-05
    • 2016-05-05
    • 2018-12-31
    相关资源
    最近更新 更多