html里平移英文,使用D3缩放和平移时,如何翻译HTML元素和SVG元素

我正在使用D3在SVG画布上绘制一堆元素,同时也在html中使用工具提示。然后,我使用zoom允许在画布上平移/缩放。我希望工具提示跟随圆圈的位置。我似乎无法弄清楚如何计算。

相关代码

const svg = select('svg');

const width = +svg.attr('width');

const height = +svg.attr('height');

// Define the div for the tooltip

const tooltip = select('body')

.append('div')

.attr('class', 'tooltip')

.style('opacity', 0);

const g = svg.append('g')

.attr('width', width)

.attr('height', height);

const zoomHandler = zoom()

.scaleExtent([1 / 10, 100])

.on('zoom', () => {

g.attr('transform', event.transform);

const { x, y, k } = event.transform;

tooltip.attr('data-offset-x', x);

tooltip.attr('data-offset-y', y);

tooltip.attr('data-offset-k', k);

});

zoomHandler(svg);

let overTooltip = false;

const moveTooltip = (d) => {

if (!overTooltip) return;

tooltip.transition()

.duration(100)

.style('opacity', 0.9);

const x = parseInt(tooltip.attr('data-offset-x') || 0, 10);

const y = parseInt(tooltip.attr('data-offset-y') || 0, 10);

const k = parseInt(tooltip.attr('data-offset-k') || 0, 10);

tooltip.html(d.id)

.style('left', `${(d.x / k + x)}px`)

.style('top', `${(d.y / k + y - radius(d) - 5)}px`);

};

const node = g.append('g')

.selectAll('circle')

.data(nodes)

.enter()

.append('circle')

.attr('r', radius)

.attr('fill', d => (colors[d.type]))

.on('mouseover', (d) => {

overTooltip = true;

moveTooltip(d);

})

.on('mousemove', moveTooltip)

.on('mouseout', () => {

overTooltip = false;

tooltip.transition()

.duration(100)

.style('opacity', 0);

})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值