3

我正在使用 d3 制作具有多条路径的图表。我在左侧显示路径描述。数据和描述是动态的,因此图例的大小自然也是动态的,因为只要我知道文本的大小(只是对域/范围的微小调整),这没什么大不了的。问题是我看不到在 Firefox 浏览器中查找文本元素大小的简单方法。

以前我是用 jquery 做的,.width()但元素上的 clientWidth 为零,这似乎导致返回 NaNpx。

...
.on("click", function(){
    alert( $(this).width() ); // NaNpx
})
...

演示:点击单词。

4

2 回答 2

5

在写这个问题时,我找到了解决方案(但仍然会发布它,因为我花了很长时间搜索,然后才深入到代码示例中)。可能只是因为我这个月是 d3 和 svg 的新手,但是getBBox()文本元素(大多数元素)上有一个方法可以生成一个宽度/高度/x/y 的对象(它真的应该用来代替jquery 用于所有 svg 维度)。

希望发布此内容将帮助遇到此问题的其他任何人,因为它对我来说似乎不是很明显。

演示

在示例中 the~~是一个翻转位运算符,两次实际上将像 Math.floor() 一样工作,但在所有浏览器中可能会更快 then .floor()

于 2012-09-18T02:49:23.980 回答
0

遇到了同样的问题。似乎 Firefox (45.0) 中存在一个错误,即 SVG 内的 <text> 元素宽度始终为 0。

我通过使用 <tspan> 元素(在 <text> 元素内)克服了这个错误,并且似乎 <tspan> 具有正确的文本宽度。

希望能帮助到你。

于 2016-03-09T23:16:11.227 回答