【发布时间】:2021-11-25 14:01:52
【问题描述】:
Js 新手我正在通过内联 svg 构建交互式发音指南。
您可以在这里查看:https://codepen.io/r-pg/pen/OJgoXWQ
我目前正在尝试添加将显示相关句子的基本样式工具提示。我已经绑定了它相对于光标位置的坐标。
我为此使用的 js 在这里:
function tooldef() {
let t1 = document.querySelector('text[data-tooltip]');
let t2 = document.querySelector('text:nth-of-type(2)');
t1.addEventListener('onmousemove', showToolTip(evt));
t2.addEventListener('onmousemove', showToolTip(evt));
}
function showToolTip(evt) {
let t = evt.currentTarget;
let phrase = t.getAttribute('data-tooltip');
document.getElementById('tooltip').innerHTML = phrase;
tooltip.style.display = "block";
tooltip.style.left = evt.offsetX + 0 + 'px';
tooltip.style.top = evt.offsetY + 0 + 'px';
/* console.log(tooltip);*/
console.log(evt.offsetX);
console.log(evt.offsetY);
}
function hideToolTip(evt) {
tooltip.style.display = "none";
}
当通过 codepen 或本地加载时,此功能非常好,但是当我将其应用于 Wordpress 时,它会将工具提示推向正确的广告,我无法确定原因。代码有问题还是 WP 内部问题?
【问题讨论】:
-
有点难以分辨——但我的猜测可能是 %'s 中指定的工具提示的转换/翻译 CSS 可能是罪魁祸首。您可能必须根据 SVG 最终的大小动态计算像素等效值 - 或者将该变换直接移动到 SVG 中,以便它采用相对于 SVG 而不是 Body 元素的单位。
-
感谢您的建议。检查代码后,我实际上注释掉了翻译 CSS,结果仍然是一样的。使用 offsetX/Y 将其发送到左侧,而 pageX/Y 和客户端 X/Y 将其发送到右侧。我有这样一种方式,我可以检索目标的 XY 坐标但是我无法让工具提示显示在那个确切的点上,有没有一种方法可以设置这些相对于 SVG 点的坐标?谢谢
标签: javascript css svg hover tooltip