将svg附加到背景图像中

时间:2014-10-14 14:23:58

标签: javascript css svg d3.js

如何将动态生成的svg分配给div的背景图像?

我用d3生成一个词云。这会将svg标记附加到<div>

 d3.select("#_wordcloud_element").append("svg")
                        .attr("width", scope.width )
                        .attr("height", scope.height)
                        .append("g")
                        .attr("transform", "translate("+scope.width/2+","+scope.height/2+")")
                        .selectAll("text")
                        .data(words)
                        .enter().append("text")
                        .style("font-size", function (d) {
                            return d.size + "px";
                        })
                        .style("font-family", "Arial")
                        .style("fill", function (d, i) {
                            return fill(i);
                        })
                        .attr("text-anchor", "middle")
                        .attr("transform", function (d) {
                            return "translate(" + [d.x, d.y] + ")rotate(" + d.rotate + ")";
                        })
                        .text(function (d) {
                            return d.text;
                        });

不是将svg附加到div,而是希望svg成为svg的背景图像。我在说明如何做到这一点。

修改

我的函数的SVG输出示例:

svg width="500" height="400"><g transform="translate(250,200)"><text text-anchor="middle" transform="translate(22,-70)rotate(90)" style="font-size: 42px; font-family: Arial; fill: rgb(31, 119, 180);">Environment</text><text text-anchor="middle" transform="translate(-73,-27)rotate(90)" style="font-size: 37px; font-family: Arial; fill: rgb(174, 199, 232);">Technology Internet</text><text text-anchor="middle" transform="translate(85,41)rotate(90)" style="font-size: 35px; font-family: Arial; fill: rgb(255, 127, 14);">Biology</text><text text-anchor="middle" transform="translate(-12,6)rotate(90)" style="font-size: 35px; font-family: Arial; fill: rgb(255, 187, 120);">Systems</text><text text-anchor="middle" transform="translate(-128,-93)rotate(0)" style="font-size: 34px; font-family: Arial; fill: rgb(44, 160, 44);">Movies</text><text text-anchor="middle" ...

1 个答案:

答案 0 :(得分:2)

使用XMLSerializer将内容序列化为字符串,然后为该背景图片创建data uri