SVG不是免費的。每個元素都允許孩子以及父母。例如文本元素。當涉及到組元素時,這裏是g SVG元素中允許的元素。要使用tspan,您必須將其嵌入到文本中,按照這個fiddle
說到foreignObject,您可以使用它來嵌入外部xml衍生物,它通常與switch語句一起使用,其中switch語句將測試requiredExtensions屬性的第一個true和瀑布下降,如我鏈接到的文檔中所述。這裏有一個 fiddle,它可以證明這取決於你的用戶代理的支持。
var switches = anchorNode.append("svg:switch")
switches.append("svg:foreignObject")
.attr("requiredExtensions", "http://www.w3.org/1999/xhtml")
.append("body").attr("xmlns", "http://www.w3.org/1999/xhtml")
.append("p").text(function(d, i) {
return "a la foreignObject" + (i % 2 == 0 ? "" : d.node.label)
}).style("fill", "#555").style("font-family", "Arial").style("font-size", 12);
switches.append("svg:text").append("svg:tspan").text(function(d, i) {
return i % 2 == 0 ? "" : d.node.label
}).style("fill", "#555").style("font-family", "Arial").style("font-size", 12);
很難提出解決方案,而不知道到底要達到什麼目標,但希望這有助於澄清問題。
我不清楚你想要做什麼。您是否希望使用HTML元素而不是SVG進行強制佈局,還是希望將特殊樣式應用於SVG元素? –
最好是第一個,但如果可能的話,第二個:) –
第一個不是真的可能,因爲你無法繪製鏈接。對於第二種,您可以像使用HTML一樣使用CSS for SVG。 –