d3,svg中如何让rect上显示文字

我在查资料的时候发现要在rect外包裹一层g才能显示text的文本内容

<g>
    <rect>
        <text></text>
    </rect>
</g>

我在使用d3时

var svg = d3.select('body').append('svg').attr('width',400).attr('height',500)
var g = svg.append('g')
var rect = g.append('rect').attr('width',40).attr('height',40)
var text = rect.append('text').text('wa').attr('fill','white')

控制台结构和上面一样但是为什么还是不能显示出text的内容呢。。。

阅读 13.2k
2 个回答
var svg = d3.select('body').append('svg').attr('width',400).attr('height',500)
var g = svg.append('g')
var rect = g.append('rect').attr('width',40).attr('height',40)
var text = g.append('text').text('wa').attr('fill','white')
  .attr('x', 20)
  .attr('y', 20)
  .attr('text-anchor', 'middle')
  .style('font-size', '20px')
  .attr('dy', 8)

感觉你写的方式不怎么可靠,你可以在rect下面添加一个text元素,然后给text元素的xy属性一定的值把文本定位到rect里面。

结构不对, 是这样:

<g>
    <rect></rect>
    <text></text>
</g>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题