javascript - 如何在 Javascript 中访问 d3 svg 图表的当前大小属性?

标签 javascript d3.js

我已经使用 Bootstrap 制作了 2 列的响应式布局,我的左列有一个 d3 强制布局图表。

以前我使用固定大小,并用它计算另一个函数使用的常量,以确保节点在图表上有合理的位置(我在堆栈上找到的解决方案):

var w = 400,
    h = 400,
    r = 6,
    k = Math.sqrt(nodes.length / (w * h)),
    fill = d3.scale.category20();

var force = d3.layout.force()
    .gravity(100 * k).charge(-10 / k)
    .linkDistance(30)
    .nodes(nodes).links(links)
    .start();

现在我有了响应式布局,我无法使用 wh。相反,我需要某种 getter 来查看图表当前的宽度和高度,以便我可以计算常量。

我是 Javascript 代码新手,所以这是我通过探索控制台想到的最好的结果:

d3.select("#chart").property('height')['animVal']['value']
d3.select("#chart").property('width')['animVal']['value']

我应该这样做吗?有没有更直接的功能?这对我来说看起来很难看..

最佳答案

这取决于代码的其余部分,但通常情况下,您会使用 getBoundingClientRect() 。此函数返回一个只读对象,其中包含所选元素的位置以及宽度和高度。对于您的情况,您可以像这样使用它:

d3.select("#chart").getBoundingClientRect().height
d3.select("#chart").getBoundingClientRect().width

关于javascript - 如何在 Javascript 中访问 d3 svg 图表的当前大小属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42351944/

相关文章:

javascript - 大量使用 javascript 后重绘页面

javascript - 不确定是什么影响按钮显示 - 已更新

javascript - Angular 2 : SyntaxError: JSON. 解析:JSON 数据第 1 行第 1 列出现意外字符

javascript - D3.js - 删除除一个之外的其他栏

javascript - 如何将数据表动态转换为树状json格式?

javascript - 图像不生成 D3

javascript - 如何访问 Colorbox 中的 JavaScript/jQuery 函数?我还没有得到满意的答复

javascript - 尝试在另一个 SVG 元素之前插入 SVG 元素时使用 d3 java 库中的 insert() 函数时出现问题

javascript - d3.js 仪表针随动态数据旋转

javascript - 在没有 HTML 文件的情况下,在 js 中将一个函数调用到另一个函数中