d3.js - 将 HTML div 覆盖层置于 SVG 图表的中心

标签 d3.js

我有一个用 D3 绘制的 SVG 饼图,并且有一个小的 HTML div,当鼠标悬停在饼图的各个切片上时,应该会出现该 div,如下所示:

http://jsfiddle.net/adamehirsch/bzSpW/

问题出在 HTML 覆盖层的定位上。目前,我必须明确地将其相对于整个页面定位。下面的代码位于 javascript 的第 145 行左右:

d3.select("#bracketsTip")
    .style("left", "420px") // this is dumb
    .style("top", "320px")  // and unnecessary, I'm sure
.transition()
    .duration(250)
    .style("opacity", 1.0);

我正在寻找一种方法,使 HTML div 显示在饼图的中心,而不必自己指定像素偏移量。有建议吗?

最佳答案

我注意到你的 fiddle 中加载了 jQuery。你可以这样做:

var leftPos = width / 2 - $("#bracketsTip").width() / 2
  , topPos = height / 2;

    d3.select("#bracketsTip")
        .style("left", leftPos + "px")
        .style("top", topPos + "px")
    .transition()
        .duration(250)
        .style("opacity", 1.0);

现在,如果您更改饼图的宽度和高度,叠加层将保持居中。

关于d3.js - 将 HTML div 覆盖层置于 SVG 图表的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17891454/

相关文章:

javascript - D3js 序数轴不显示所有刻度

javascript - 给出不同于刻度名称的 d3 序数轴标签

javascript - 如何使用 d3.csv() 检查 CSV 中值的类型?

javascript - 如何翻译 d3.js 节点?

javascript - 使用 Date() 对象的 d3.bisector 无法解析

javascript - 缩放 D3 map 时出错

javascript - 如何使用 jQuery 遍历 JSON 文件

javascript - AngularJS + d3js : Issues with resizing objects

javascript - 在交互式图表中动态缩放数据,其中数据会发生变化?

javascript - 计算 D3 中一组的高度和宽度