Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据SVG元素顶部位置定位工具提示_Javascript_Svg_Raphael_Getboundingclientrect - Fatal编程技术网

Javascript 根据SVG元素顶部位置定位工具提示

Javascript 根据SVG元素顶部位置定位工具提示,javascript,svg,raphael,getboundingclientrect,Javascript,Svg,Raphael,Getboundingclientrect,我被这一条困住了: 我得到了这个Raphael生成的SVG图形,包含300多个多边形。我想在悬停多边形时显示工具提示。我希望工具提示位于悬停路径旁边。 到目前为止,一切都很好。。。我可以使用.pageX和.pageY属性。 现在,这就是我现在被困的地方… 我并不希望工具提示确切地定位在鼠标进入的位置,而是与多边形顶部对齐,无论鼠标进入何处 显然,我在发布这篇文章之前做了一些研究,发现.getBoundingClientRect()方法可能就是我所需要的。不幸的是,我不能让它工作。控制台返回“无

我被这一条困住了:
我得到了这个Raphael生成的SVG图形,包含300多个多边形。我想在悬停多边形时显示工具提示。我希望工具提示位于悬停路径旁边。
到目前为止,一切都很好。。。我可以使用.pageX和.pageY属性。
现在,这就是我现在被困的地方…
我并不希望工具提示确切地定位在鼠标进入的位置,而是与多边形顶部对齐,无论鼠标进入何处

显然,我在发布这篇文章之前做了一些研究,发现.getBoundingClientRect()方法可能就是我所需要的。不幸的是,我不能让它工作。控制台返回“无法读取未定义的属性'getBoundingClientRect'

我不太擅长javascript,如果有任何帮助,我将不胜感激

下面是代码:

var rsr=Raphael('rsr','147.99','151'); 变量形状=[]; var path_a=相对误差路径(“M 59.288,50.5 44.58,25.5 59.288,0.5 88.703,0.5 103.41,25.5 88.703,50.5 z”); 路径a.数据('id','path a'); var path_b=rsr.path(“M 103.288,75.5 88.58,50.5 103.288,25.5 132.703,25.5 147.41,50.5 132.703,75.5 z”); 路径b.数据('id','path b'); var path_c=rsr.path(“M 59.288100.5 44.58,75.5 59.288,50.5 88.703,50.5 103.41,75.5 88.703100.5 z”); 路径c.数据('id','path_c'); var path_d=rsr.path(“M 15.288,75.5 0.58,50.5 15.288,25.5 44.703,25.5 59.41,50.5 44.703,75.5 z”); 路径数据(“id”、“路径数据”); var path_e=rsr.path(“M 103.288125.5 88.58100.5 103.288,75.5 132.703,75.5 147.41100.5 132.703125.5 z”); 路径数据('id','path_e'); var path_f=rsr.path(“M 59.288150.5 44.58125.5 59.288100.5 88.703100.5 103.41125.5 88.703150.5 z”); 路径数据('id','path_f'); var path_g=rsr.path(“M 15.288125.5 0.58100.5 15.288,75.5 44.703,75.5 59.41100.5 44.703125.5 z”); 路径数据('id','path_g'); 推送(路径a、路径b、路径c、路径d、路径e、路径f、路径g); 对于(var i=0;i
您可以使用事件对象的
target
属性来获取边界矩形。如下所示:

var rsr=Raphael('rsr','147.99','151'); 变量形状=[]; var path_a=相对误差路径(“M 59.288,50.5 44.58,25.5 59.288,0.5 88.703,0.5 103.41,25.5 88.703,50.5 z”); 路径a.数据('id','path a'); var path_b=rsr.path(“M 103.288,75.5 88.58,50.5 103.288,25.5 132.703,25.5 147.41,50.5 132.703,75.5 z”); 路径b.数据('id','path b'); var path_c=rsr.path(“M 59.288100.5 44.58,75.5 59.288,50.5 88.703,50.5 103.41,75.5 88.703100.5 z”); 路径c.数据('id','path_c'); var path_d=rsr.path(“M 15.288,75.5 0.58,50.5 15.288,25.5 44.703,25.5 59.41,50.5 44.703,75.5 z”); 路径数据(“id”、“路径数据”); var path_e=rsr.path(“M 103.288125.5 88.58100.5 103.288,75.5 132.703,75.5 147.41100.5 132.703125.5 z”); 路径数据('id','path_e'); var path_f=rsr.path(“M 59.288150.5 44.58125.5 59.288100.5 88.703100.5 103.41125.5 88.703150.5 z”); 路径数据('id','path_f'); var path_g=rsr.path(“M 15.288125.5 0.58100.5 15.288,75.5 44.703,75.5 59.41100.5 44.703125.5 z”); 路径数据('id','path_g'); 推送(路径a、路径b、路径c、路径d、路径e、路径f、路径g); 对于(var i=0;i


非常感谢@FixMaker给出的答案。对于我提供的简化示例,它确实非常有效。但是,我提出了另一个问题。由于图形高度非常重要,我们经常需要上下滚动。然后……它变得非常混乱:-(有什么建议吗?哦,我想我明白了!posy=pos.top+window.scrollY;应该做这项工作。谢谢你的帮助!