CSS-Sprites + D3.js

时间:2014-05-30 18:55:11

标签: javascript html css d3.js css-sprites

我正在尝试在<circle>中附加HTML元素,然后使用CSS-Sprite填充它们,但到目前为止我看不到它们!

以下是我正在做的事情:

 //Create the node in order to use the Force Layout
 var node = svg.selectAll(".container")
    .data(data)
    .append("circle")
    .attr("class", "dot")
    .attr("r", radius)
    .attr("cx", function(d) { return x(d[xVar]); }) //xAxis position
    .attr("cy", function(d) { return y(d[yVar]); }) //yAxis position
    .append("xhtml:i")
    .attr('class',  function(d) {
      return 'sprite '+ d['css-code'];
    });

我的css:

.sprite{
    position: absolute; 
    background:url(sprite.png) no-repeat;
}

.ad{background-position:0 -704px;}
.ae{background-position:0 -736px;}
.etc

正在生成它们,我可以在浏览器检查器上看到它们并使用正确的css属性,但它们不会出现。

如何在D3的Force Layout中使用CSS-Sprites?

1 个答案:

答案 0 :(得分:1)

您直接在SVG <i>元素中插入<circle>元素,这不是合法的SVG标记。您至少可以使用几种替代方案。

  • 制作节点<g>元素,其中包含<circle>元素和精灵的不同元素。

  • 将HTML精灵直接插入图表的HTML容器中,并将它们绝对定位以与节点位置对应。