为了渲染SVG我正在使用jQuery SVG插件.而且,现在我想为每个路径和多边形添加文本.在
jsFiddle,您可以看到插件生成的标记.
为了创建文本,我编写了以下代码:
var svgg = $("#rsr").svg('get'); var texts = svgg.createText(); svgg.textpath($("#Layer_x0020_1"),id,texts.string('We go '). span('up',{ dy: -30,fill: 'red' }).span(',',{ dy: 30 }). string(' then we go down,then up again'));
解决方法
要将文本以直线放置在形状的顶部,请在边界框的中间显示:
http://jsfiddle.net/dYuAA/114/
它只是添加了一些javascript来放置文本.
function addText(p) { var t = document.createElementNS("http://www.w3.org/2000/svg","text"); var b = p.getBBox(); t.setAttribute("transform","translate(" + (b.x + b.width/2) + " " + (b.y + b.height/2) + ")"); t.textContent = "a"; t.setAttribute("fill","red"); t.setAttribute("font-size","14"); p.parentNode.insertBefore(t,p.nextSibling); } var paths = document.querySelectorAll("path"); for (var p in paths) { addText(paths[p]) }
以上仅查看路径元素,但您可以调整选择器以包含您需要的任何内容.