2013-08-21 37 views
0

通常,當您在D3.js中追加對象並且想要定義特定的可視化對象(例如,出現在另一個對象頂部的信息框)時,您可以設置一種風格。在我的情況下,我想這一點:D3無法將樣式設置爲已上傳的對象

... 
.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> 

的事情是,由於某種原因,當代碼生成它不設置樣式框我定義,其實屬性「風格」沒有按根本不會出現,考慮到我希望這個盒子出現在我懸停的酒吧的頂部,這非常煩人。

這發生在我正在使用Spring MVC的代碼中。更確切地說,我從一個自定義標記生成JavaScript代碼,接收一些參數,然後在一個jsp中「呈現」,並用這些參數調用它。我不知道它是否有事可做,但我很確定兩件事:

  1. 有沒有與其他JavaScript文件「碰撞」,因爲d3是我唯一使用的.js用我的代碼。
  2. 在jsp中生成的完全相同的JavaScript代碼在普通html頁面中按預期工作。

針對此問題的一些解決方法?在Spring中做的一些配置阻止我使用嵌套在HTML中的樣式?我真的會爲此回答一個答案,因爲它讓我發瘋,我需要儘快解決它。

最後兩個注意事項:

  1. 我使用ATTR( 「風格」, 「頂」 已經試過+(高度 - (YV * d))+ 「左」 +(XV *我)+「;」),它不起作用。 :(
  2. 使用一個類不是一個選項,因爲這很大程度上取決於我懸停的對象的值,我不能爲每個可能的場景創建一個類(在這之前我會切開我的靜脈)。

回答

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") 
+0

......我不知道我的原代碼是如何工作的我html,而不是在jsp中,但是,嘿,最後它很容易...對於提出愚蠢的問題感到抱歉......但是我總是設置top和left屬性而不定義px。 – MangaPowerZero

+0

你可以不用px一世n jQuery,它爲你做了一些額外的解釋,但不適用於d3。 – nrabinowitz

相關問題