需求描述
我使用d3解析数据的.csv文件,然后动态地填充页面上的各种项。下文有一节:

我的代码进展

这两种解决方案都可以工作,但解决方案1只在Chrome中工作,并且解决方案2不允许我动态设置图像,因为所有这些都是用css完成的,而“后”结构不能在线使用。
我希望帮助我找到一个解决方案,让我可以动态设置图像,也可以在Chrome、Firefox 25和IE 11中工作。
编辑:谢谢你们的投票,伙计们。我现在添加了图片:)
发布于 2013-11-16 17:39:01
实际上,我认为最好的解决方案不是向放置文本的div元素中添加背景图像,而是为您创建的每个div创建一个子div,并在其子元素中处理该图像。
careerstage_td.selectAll('div')
.data(dataset)
.enter().append('div')
.attr("class", "career-count")
.text(function(d){return d;})
.style("color", function(d){return d.color;})
.append('div')
.attr("class", "childClass")
.style("background-image", function(d){return "url('images/" + d.icon + "')";})
.style("background-repeat", "no-repeat")
.style("background-position", "center center");在给定的代码中,我会根据数据生成div,并为每个div追加一个新的div (类名"childClass")。现在我可以在这个childClass上玩了。
以看到弹琴了为例。(请注意,我使用了一个简化的数据集,因此我总是将图像作为背景,并使用相同的文本颜色)。
要确保图标显示在父节点的中间,关键是将父节点定义为position:relative,子节点定义为absolute,宽度和高度为100%。以背景为中心,x和y都可以完成这项工作。
https://stackoverflow.com/questions/20009625
复制相似问题