javascript – 在d3.js中将div添加到圆圈
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 在d3.js中将div添加到圆圈,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2473字,纯文字阅读大概需要4分钟。
内容图文
我有一个d3.js的甜甜圈,我想在它的中心放一些信息.我可以追加文本元素,但我想在那里放一个格式化的信息,所以我决定在mouseover上添加div:
$(".arc").on("mouseover",(function(){
d3.select("text").remove();
var appendingString="<tspan>"+cityName[$(this).attr("id")]+"</tspan> <tspan>"+$(this).attr("id")+"%</tspan>";
group
.append("text")
.attr("x",-30)
.attr("y",-10)
.text(appendingString);
}));
由于某种原因div成功添加了我需要但不显示的信息.追加它的正确方法是什么,还是有其他替代方法?
完整脚本如果需要:
<script>
var cityNames=["Челябинск","Область","Миасс","Копейск"];
var cityPercentage=[50,30,20,10];
var width=300,
height=300,
radius=100;
var color=d3.scale.linear()
.domain([0,60])
.range(["red","blue"]);
var cityDivision = d3.select("#cities")
.append("svg")
.attr("width", width)
.attr("height", height)
.attr("class","span4");
var group=cityDivision.append("g")
.attr("transform","translate(" + width / 2 + "," + height / 2 + ")");
var arc=d3.svg.arc()
.innerRadius(radius-19)
.outerRadius(radius);
var pie= d3.layout.pie()
.value(function(d){return d;});
var cityName={
50:"Челябинск",
30:"Область",
20:"Миасс",
10:"Копейск"
}
var arcs=group.selectAll(".arc")
.data(pie(cityPercentage))
.enter()
.append("g")
.attr("class","arc")
.attr("id",function(d){return d.data;});
arcs.append("path")
.attr("d",arc)
.attr("fill",function(d){return color(d.data);});
//Добавление надписи в центре
group
.append("circle")
.style("fill","white")
.attr("r",radius-20);
$(".arc").on("mouseover",(function(){
d3.select("div.label").remove();
var appendingString=cityName[$(this).attr("id")]+"\n "+$(this).attr("id")+"%";
group
.append("div")
.attr("class","label")
.html(appendingString);
}));
</script>
解决方法:
您不能将div直接注入svg元素.你有两个选择:
>使用文本元素,然后在其中使用tspan元素对其进行格式化.这很麻烦,但保证可以与支持SVG的任何浏览器一起使用.
>使用foreignObject元素,然后在其中包含格式化的HTML(div).浏览器对此的支持相当粗略:https://stackoverflow.com/a/4992988/987185
在这种情况下使用tspan的示例:
$(".arc").on("mouseover",(function(){
d3.select("text").remove();
var text = group
.append("text")
.attr("x",-30)
.attr("y",-10)
.selectAll('tspan')
.data([cityName[$(this).attr('id')], $(this).attr('id') + '%'])
.enter()
.append('tspan')
.attr('x', 0)
.attr('dx', '-1em')
.attr('dy', function (d, i) { return (2 * i - 1) + 'em'; })
.text(String);
}));
旁注:看起来您使用数字([0-9] *)作为id属性.有效的id属性不能以数字开头,尽管它们适用于大多数浏览器.
内容总结
以上是互联网集市为您收集整理的javascript – 在d3.js中将div添加到圆圈全部内容,希望文章能够帮你解决javascript – 在d3.js中将div添加到圆圈所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。