javascript - 设置文本宽度或将文本放入 div 中

标签 javascript svg d3.js

我希望能够在 D3 中设置文本元素的宽度。现在我有一些圆形文本,但我无法设置该元素的宽度。 (假设 nodeEnter 是我图中的一个节点)

nodeEnter.append("circle")
    .attr("r", function(d){return d.radius+"px";});

/* Add text in middle of circle */
nodeEnter.append('text')
    .text("this is a very long text");

我想要的是找到一种简单的方法来设置该文本元素的宽度(溢出向下,就像在简单的 div 中一样)。我现在的方法如下:

nodeEnter.append("circle")
    .attr("r", function(d){return d.radius+"px";});

/* Add text in middle of circle */ 
nodeEnter.append("foreignObject")
    .attr("width", 130)
    .attr("height", 200)
    .attr("class", "myCSS")
    .append("xhtml:div")
    .html("this is a very long text"); 

但是我认为这不是最好的解决方案,例如我在 myCSS 中设置的所有内容都被覆盖。此外,我不知道如何将异物置于圆的中心(尤其是在 x 轴上)。

预先感谢您的帮助。

最佳答案

如果您想要自动换行,带有 divforeignObject 是最佳选择。您提到的问题可以相对容易地解决。当您为 svg 元素设置 myCSS 时,您没有为 div 设置它。如果您在附加 div 之后添加行来设置 CSS 类,它应该会获取设置。

使文本居中的最简单方法可能是设置 div 的大小以接触圆的边缘,并添加 CSS 使文本在 div 内居中>.

关于javascript - 设置文本宽度或将文本放入 div 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13803678/

相关文章:

javascript - 从页面(Omniture 像素)获取呈现的 JavaScript?

html - SVG 元素无法在 Safari 中显示阴影过滤器

javascript - 舍入 x 和 y 后,Svg 元素有时会卡住

javascript - 使用 D3.JS 时无法加载 TSV

javascript - 如何在我的数据之间使用流畅的动画向左移动多条路径

javascript - Selenium鼠标滚轮下拉加载所有页面

javascript - 这个变量在ES6中是全局的吗?

javascript - SVG + Chrome : Strange Rendering with Many Circles

javascript - 使用 vue.js 更改 v-tab 中变量的标题

javascript - SVG 多边形形状与图像