D3 无法将样式设置为追加对象



通常,当您在D3.js中附加一个对象并且想要定义一个特定的可视化(例如,显示在另一个对象顶部的信息框)时,您可以设置一个样式。在我的情况下,我正在尝试这个:

...
.on("mouseover", function (d, i) {
           graph.append("div")
                .attr("class","info-box")
                // info-box is defined with position: absolute
                .style("top", height - (yV * d))
                .style("left", (xV * i))
                .text("INFO")
}
...

因此,如果我将鼠标悬停在我用这段代码定义的一个对象上(假设它是一系列竖条中的第二个),应该会出现一个包含以下代码的框:

<div class="info-box" style="top: 30; left: 10">
    INFO
</div>

问题是,出于某种原因,当代码生成框时,它没有设置我定义的样式,事实上,属性"style"根本没有出现,考虑到我希望这个框出现在我悬停的栏的顶部,这很烦人。

这种情况发生在我正在Spring MVC中编写的代码中。更准确地说,我从一个自定义标记生成javascript代码,该标记接收几个参数,然后它在用这些参数调用它的jsp中"渲染"。我不知道它是否有什么关系,但我很确定两件事:

  1. 与其他javascript文件没有"冲突",因为d3是我在代码中使用的唯一.js
  2. jsp中生成的javascript代码与普通html页面中预期的完全相同

有什么解决办法吗?Spring中的一些配置阻止我使用嵌套在HTML中的样式?我真的很想知道答案,因为这让我疯了,我需要尽快解决。

最后两个注意事项:

  1. 我已经尝试过使用attr("style","top:"+(height-(yV*d))+";left"+(xV*I)+"),但它不起作用。:(
  2. 使用类不是一种选择,因为这在很大程度上取决于我悬停的对象的值,并且我不能为所有可能的场景创建一个类(在这样做之前,我会切开我的血管)

您只需要添加单位,在本例中为"px",就可以设置这些css属性。

.on("mouseover", function (d, i) {
       graph.append("div")
            .attr("class","info-box")
            // info-box is defined with position: absolute
            .style("top", (height - (yV * d)) + 'px')
            .style("left", (xV * i) + 'px')
            .text("INFO")

相关内容

  • 没有找到相关文章