javascript - 将 d3 力图的线放在前景中

标签 javascript css d3.js svg

我找不到将 d3js 力导向图的线置于前台的方法。我希望我的 div(图形的节点)位于线的后面。我可以更改 div 的不透明度,但这不是我想要的,我可以将 div 的 z-index 更改为负数,但这使得它们无法拖动...

有人知道解决方案吗?

我这里有一个 fiddle : https://jsfiddle.net/5jgrf5h8/

//create a svg in the body of index.html
var svg = d3.select("body").append("svg")
  .classed("simulation", 1)
  .attr("width", width)
  .attr("height", height);

//setting the links

var glink = svg.append("g")
.attr("class", "links")
.selectAll("links")
.data(links).enter();

var link = glink.append("polyline")
.attr("stroke-width", 2);



//setting the nodes. they will be div elements
var node = d3.select("body")
  .append("div")
  .attr("class", "nodes")
  .selectAll(".node")
  .data(nodes)
  .enter().append("div")
  .attr("class", "node")
  .attr("id", function(d){return d.id;})
  .style("background", function(d) { return color(d.group); });

最佳答案

我的一个解决方案基于两个前提:

  1. 定位元素出现在未定位元素的前面。

  2. 绘制顺序影响分层

因此,两个快速更改应该可以解决此问题。在你的 CSS 中:

svg { position: absolute; }

然后只需在 svg 之前附加 .node div。

Updated fiddle.

如果需要拖动方框,还可以将 svg 的指针事件设置为无 - different updated fiddle .

关于javascript - 将 d3 力图的线放在前景中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42431953/

相关文章:

javascript - 在 Angular 9 的 elemntRef 中找不到 Div 的内部文本

css - 用CSS保持左列固定

php - Drupal 7 - 将内容类型标题样式从 <h3> 更改为 <h2>

javascript - Node.js jsdom/express 响应缓存?

javascript - 如何禁用 d3 对数刻度中的小刻度?

javascript - 嵌入 iframe 的 Three.js 在 iOS 8/9 中不断增长

javascript - JS 和 PHP - 在 js 发出信号后加载 php 数据而不发送回发

javascript - 折线图的 x 坐标缩放

JavaScript 和 TypeScript 作用域问题

CSS 导航菜单问题