我有一个SVG图像(alpha),我想在鼠标悬停时显示一些控制选项组,并在鼠标移出时隐藏它们。
我们说我在x=100, y=100
中有图像alpha。我在我的svg中有一个预定义的工具提示分类组,其风格'可见性'隐藏'。
我将样式更改为可见,我将其x,y坐标设置为alpha.attr('x')-20
,alpha.attr('y')-20
。所以它出现在图像的左下角。但当我从图像中鼠标移开时,该组隐藏了自己,为了克服这个问题,我延迟了setTimeOut()
功能。但是当我鼠标移动到控制组时,由于延迟,它将样式更改为隐藏。
我尝试使用d3.transition
,但是当我悬停控制组时,我无法弄清楚如何删除它。
我不知道如何克服这个问题并达到我的要求。谁能帮我?
d3.select('#svg')
.append('g')
.attr('id', 'playground')
.append('image')
.attr('class', 'tooltip')
.attr('width', 20)
.attr('height', 20)
.attr('x', 0)
.attr('y', 0)
.attr('xlink:href', base_url + '/assets/svg/api_lbs_color.svg')
.style('visibility', 'hidden')
.on('mouseover', function () {
d3.select(this).style('visibility','visible');
})
.on('mouseout', function () {
d3.select(this).style('visibility','hidden');
});
playGround
.append('image')
.attr('width', 32)
.attr('height', 32)
.attr('x', d3.mouse(this)[0])
.attr('y', d3.mouse(this)[1])
.attr('xlink:href', curr.attr('xlink:href'))
.on("mouseover", function(d) { // the mouseover event
console.log('mouse over playgrround operator');
var curr = d3.select(this);
d3.select('.tooltip')
.attr('x', curr.attr('x') - 20)
.attr('y', curr.attr('y') - 20)
.style('visibility', 'visible')
;
})
.on('mouseout', function () {
setTimeout(function () {
d3.select('.tooltip')
.style('visibility', 'hidden')
}, 1000);
})
;