gpt4 book ai didi

javascript - D3.js/Javascript Node-Lines弹出窗口和颜色变化

转载 作者:行者123 更新时间:2023-11-27 23:14:36 30 4
gpt4 key购买 nike

我正在开发 D3.js,并且有一张包含线条和节点的 map 。当我用鼠标点击它们时,我希望它们改变颜色并变得更厚,并且我想要一个小的弹出窗口来显示它们的 ID。在弹出窗口的 HTML 中,有一个 onmouseover 函数。第一个问题:javascript中有没有像onmouseover这样的函数?第二个问题:当鼠标位于特定节点或线上时,有什么方法可以改变颜色并使线条或节点变粗。 (如果JQuery有办法的话我可以使用JQuery)

最佳答案

对于工具提示,我有这个 fiddle :http://jsfiddle.net/reko91/7NReF/36/

首先,为工具创建容器:

 var tooltip = d3.select("body")
.append("div")
.attr('class','tooltipdiv')
.style("position", "absolute")
.style("z-index", "10")
.style("visibility", "hidden")
.text("a simple tooltip");

然后在鼠标悬停时将文本设置为您想要的内容,鼠标移动,移动工具提示,鼠标移开时,隐藏工具提示:

circles.on("mouseover", function(d){return tooltip.style("visibility", "visible").text(d);})
.on("mousemove", function(){return tooltip.style("top",
(d3.event.pageY-10)+"px").style("left",(d3.event.pageX+10)+"px");})
.on("mouseout", function(){return tooltip.style("visibility", "hidden");});

对于节点,您可以直接设置样式,也可以添加一个类并在一个中完成所有操作。所以你只需要改变CSS即可。因此,如上所述,我已经在这个 fiddle 中实现了这两个功能: http://jsfiddle.net/reko91/7NReF/37/

源代码:

var w = 500;
var h = 50;

var dataset = [ 5, 10, 15, 20, 25 ];

var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);

var circles = svg.selectAll("circle")
.data(dataset)
.enter()
.append("circle");

circles.attr("cx", function(d, i) {
return (i * 50) + 25;
})
.attr("cy", h/2)
.attr("r", function(d) {
return d;
});


var tooltip = d3.select("body")
.append("div")
.attr('class','tooltipdiv')
.style("position", "absolute")
.style("z-index", "10")
.style("visibility", "hidden")
.text("a simple tooltip");


circles.on("mouseover", function(d){
d3.select(this).classed('hovernode', true)
return tooltip.style("visibility", "visible").text(d);})
.on("mousemove", function(){return tooltip.style("top",
(d3.event.pageY-10)+"px").style("left",(d3.event.pageX+10)+"px");})
.on("mouseout", function(){
d3.select(this).classed('hovernode', false)
return tooltip.style("visibility", "hidden");});
.tooltipdiv{
background:white;
}

.hovernode{
fill:red;
stroke:blue;
stroke-width:5px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<body>

</body>

我添加了更改节点边框的功能

关于javascript - D3.js/Javascript Node-Lines弹出窗口和颜色变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35924621/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com