gpt4 book ai didi

javascript - 为什么 Tooltip 不随鼠标移动?

转载 作者:太空宇宙 更新时间:2023-11-04 15:47:31 26 4
gpt4 key购买 nike

这是制作饼图的代码。

我为饼图添加了 2 个功能。第一个是当鼠标悬停在圆弧上时增加圆弧大小。

第二个是,当我悬停时,工具提示显示鼠标的 y 位置,并且此工具提示随鼠标移动。

但我的问题是。工具提示文本不随鼠标移动而移动。

我已经看到各种堆栈溢出链接,但我无法找到解决方案。下面我还附上了链接,这样问题就不会被标记为重复。

请不要给我工具提示的新代码。更正这个

下面是我已经访问过的链接
Why is my D3.js tooltip not working
D3 - Positioning tooltip on SVG element not working
Tooltips not showing on mouse move and mouse over

jsfiddle 链接:- https://jsfiddle.net/uoh1bsrp/谢谢,
舒巴姆夏尔马

width = 600
height = 600

svg = d3.select('body').append('svg').attr('width',width).attr('height',height).append('g').attr('transform', 'translate(' + (width / 2) + ',' + (height / 2) + ')');
a = [2,5,7]
pie = d3.pie()
radius = 150

arc = d3.arc().innerRadius(0)
.outerRadius(radius);
arcs = svg.selectAll('arc').data(pie(a)).enter().append('g')
arcs.append("path").attr('d',function(d){return arc(d)})

tooltip = svg.append('text')

color = ['red','green','blue']
path = d3.selectAll('path').style('fill',function(d,i){return color[i]})

path.on('mouseover',handlemouseover)
path.on('mouseout',handlemouseout)
path.on('mousemove',handlemousemove)



function handlemouseover(){
d3.select(this).attr('d',function(d){return d3.arc().innerRadius(0)
.outerRadius(180)(d)});

}


function handlemousemove(){
// svg.append('text').text(function(){return 'shubham'}).style('top',(d3.event.layerY + 10)+'px').style('left',(d3.event.layerX + 10) + 'px')
tooltip.text(function(){return d3.event.layerX}).style('top',(d3.event.layerY + 10)+'px').style('left',(d3.event.layerX + 10) + 'px').style('display','block');
}


function handlemouseout(){
d3.select(this).attr('d',function(d){return d3.arc().innerRadius(0).outerRadius(radius)(d)});
tooltip.style('display', 'none');
}
<head>
<script src="https://d3js.org/d3.v4.min.js"></script>
<script src="https://d3js.org/d3-path.v1.min.js"></script>
<script src="https://d3js.org/d3-shape.v1.min.js"></script>
</head>

最佳答案

那是因为您试图增加 SVG 中 text 标签的 top 属性。这个属性是行不通的。您可以使用 translate 代替它,或者只使用 div 或 span 等标签。检查 fiddle https://jsfiddle.net/fr71t0o3/3/ :

function handlemousemove() {
// svg.append('text').text(function(){return 'shubham'}).style('top',(d3.event.layerY + 10)+'px').style('left',(d3.event.layerX + 10) + 'px')
tooltip
.text(function() {
return d3.event.layerX;
})
.style('transform', `translate(${d3.event.layerX - 300}px, ${d3.event.layerY - 300}px)`)
.style('display', 'block').style('color','red');
}

我不确定工具提示的偏移量,如果你想让它随着鼠标移动而移动,你可以使用鼠标坐标。

关于javascript - 为什么 Tooltip 不随鼠标移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53914086/

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