javascript - 无法在 D3 生成的 SVG 文本中打断长句

标签 javascript charts d3.js

我想在 D3 生成的 SVG 文本中将长句子分成两行。但我不能在D3/javascript中做到这一点.我试过 \n<br/> , 但它们不工作。

<!DOCTYPE html>
<html>
<body>
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<script type="text/javascript">
    var margin = {top: 80,left: 70, bottom: 80,right: 100},
        height = 660 - margin.top - margin.bottom,
        width = 1320 - margin.left - margin.right;

    var chart = d3.select("body")
        .append("svg")
        .attr("width", width + margin.left + margin.right)
        .attr("height", height + margin.top + margin.bottom)
        .append("g")
        .attr("transform", "translate("+margin.left+","+margin.top+")");

    chart.append('text')
        .attr('x', 100)
        .attr('y', 100)
        .text("I want to have this \n sentence in two lines")
        .attr("dy", "1em")
        .style("text-anchor", "middle")
        .style("font-family", "Helvetica, Arial, sans-serif")
        .style("font-weight", "bold")
        .style("font-size", "16px" )
        .style("fill", "#1ABC9C");

</script>
</body>
</html>

最佳答案

使用 .append("foreignObject").append("xhtml:span").html("your text <br> will goes here");而不是 .text()功能。

例子:

var mytext=svg.append("foreignObject").attr("width"100).attr("height",50).append("xhtml:span")
.html("Your Text <br> goes here");

此处不需要 br 标签,当达到指定宽度时,文本将自动换行到下一行。

关于javascript - 无法在 D3 生成的 SVG 文本中打断长句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20867514/

相关文章:

API 18 上未添加 JavaScriptInterface

javascript - Chart.js:条形图第一条和最后一条未完整显示

java - jfreechart自定义滚动产生索引越界异常

json - 使用 d3.json()/d3.xhr() 的多部分发布请求

javascript - 每次访问选项卡时都会生成 D3 图表

java - Ant 中 Javascript 拆分的奇怪结果

javascript - AngularJS 应用程序为多个 Controller 加载和处理一次 JSON 数据

javascript - 如何删除具有特定子项的 jQuery 中的元素?

c# - c# 中没有网格线的 epplus 图表(它是一个网络应用程序)

javascript - D3 与 Dojo GFX 对比