我已经盯着这个看了有一段时间了,我只是不明白我做错了什么。我基本上试图自己实现这个例子:http://vallandingham.me/building_a_bubble_cloud.htm
以与本文类似的方式,我有一个如下所示的 DOM 结构
<div id="d3">
<div id="labels">
<div class="label">Label</div>
</div>
<svg> << SVG-stuff >> </svg>
</div>
Run Code Online (Sandbox Code Playgroud)
据我了解,在本文中,标签 div 是通过 d3 的 tick 函数内的 .style() 函数定位的。因此:
d3.selectAll(".label")
.style("left", function(d) { return d.x - (d.dx / 2) + "px"; })
.style("left", function(d) { return d.x - (d.dx / 2) + "px"; })
Run Code Online (Sandbox Code Playgroud)
但是:运行时,不会将任何样式应用于元素!
我缺少什么?为什么这在示例中有效?
好吧,我很高兴自己回答这个问题,以防万一其他人对 .style() 感到困惑
上述情况的问题是d.dx未定义,这意味着该函数不返回任何内容。
我只是没有意识到,如果是这样的话,甚至不<div style="left: ; rigt: ;">适用。
.style()只要定义了参数,它确实可以作用于 DOM 中任何地方的 div 元素:
.style("left", function(d) { return d.x + "px"; })