2013-08-21 122 views
0

我想带上一套圈顶部的。D3带上一个圆圈?

[JS] 
function brushUser(userList){ 
    userMapSvg.selectAll('circle') 
     .data(userNodes) 
     .classed('selected', function(d){ 
      if (contains(userList, d.firmwideId)){ 
       return true; 
      } 
      else 
       return false; 
      }); 
} 

[CSS] 
#selector-usermap-body circle { 
    fill: steelblue; 
    z-index: 1; 
} 

#selector-usermap-body circle.selected{ 
    stroke: black; 
    stroke-width: 2; 
    z-index: 10; 
} 

但它不工作。

我不知道是否有一种方法通过CSS和类来做到这一点。

的问题是相似的,但this我正在寻找一个优雅的方式。

回答

2

由于@ScottCameron指出,要做到这一点的唯一方法是实际四处移动节点。在一般情况下,一帮兄弟元素,这是很容易做到:

circle.on('mouseover', function() { 
    this.parentNode.appendChild(this); 
}); 

这里你可以看到一个工作示例:http://jsfiddle.net/nrabinowitz/5J37Z/

+0

+1为你的jsfiddle例子。 – SolessChong

-1

添加position:absolute;到你的圈子,使z-index的工作

+0

我敢肯定,没有这些功能在SVG可。 – nrabinowitz

1

SVG不具有Z-指数的任何明确的概念。到SVG内实现Z顺序的唯一方法是左右移动节点,所以你要在上面的节点出现在DOM晚于您想对底部的节点。

有讲这增加了SVG 2,但据我所知它仍然是处于早期开发阶段:http://www.w3.org/Graphics/SVG/WG/wiki/SVG2_Requirements_Input