繁体   English   中英

鼠标坐标似乎错误地放置了 Raphael.js 对象

[英]Mouse coordinates appears to incorrectly place Raphael.js objects

我在拉斐尔空间上有一些矩形。 我设置了一个快速鼠标坐标显示来精确放置对象:

document.addEventListener("mousemove",function(event){

        var x = event.clientX;
        var y = event.clientY;

    document.getElementById('position').innerHTML = " X = "+ x +" Y = "+ y;

            });

然而,似乎矩形往往比预期的位置高出大约 10 像素。 为什么会这样? (我也知道使用style而不是 css 文件是不好的做法,但我只是想直接玩弄拉斐尔而不用担心)

 var p = Raphael("paper"); let r1, r2, r3, l1; r1 = p.rect(200, 200, 40, 40) .attr({ 'fill': 'red', 'cursor': 'pointer', 'href': 'https://www.google.com/', }); r2 = p.rect(277, 320, 50, 50) .attr({ 'fill': 'blue', 'cursor': 'pointer', 'href': 'https://www.google.com/', }); p.path("M 200,200 L 240,240"); r3 = p.rect(377, 300, 30, 80) .attr({ 'fill': 'yellow', 'cursor': 'pointer', 'href': 'https://www.google.com/', }); document.addEventListener("mousemove", function(event) { var x = event.clientX; var y = event.clientY; document.getElementById('position').innerHTML = " X = " + x + " Y = " + y; });
 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>tester2</title> <script src="raphael-min.js"></script> </head> <body> <div id="content"> <div id="paper"></div> </div> <p id="position">Test</p> <style> #paper { height: 500px; width: 500px; border: 1px solid black; } </style> </body>

我怀疑我的鼠标坐标系只是关闭,但如果是这样,我不知道如何相对于Raphael("paper");配置它Raphael("paper");

问题的实时链接: https : //jsfiddle.net/oLwydha6/

我该如何解决问题?

总差为9px ,距主体 ( 8px ) 和边框 ( 1px ) 的边距。 您可能需要考虑使用offsetX而不是clientX来获取位置:

 var p = Raphael("paper"); let r1, r2, r3, l1; r1 = p.rect(200, 200, 40, 40) .attr({ 'fill': 'red', 'cursor': 'pointer', 'href': 'https://www.google.com/', }); r2 = p.rect(277, 320, 50, 50) .attr({ 'fill': 'blue', 'cursor': 'pointer', 'href': 'https://www.google.com/', }); p.path("M 200,200 L 240,240"); r3 = p.rect(377, 300, 30, 80) .attr({ 'fill': 'yellow', 'cursor': 'pointer', 'href': 'https://www.google.com/', }); document.addEventListener("mousemove", function(event) { var x = event.clientX; var y = event.clientY; document.getElementById('position').innerHTML = " clientX = " + x + " clientY = " + y; document.getElementById('position_offset').innerHTML = " offsetX = " + event.offsetX + " offsetY = " + event.offsetY; });
 #paper { height: 500px; width: 500px; border: 1px solid black; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/raphael/2.2.8/raphael.min.js"></script> <div id="content"> <div id="paper"></div> </div> <p id="position">Test</p> <p id="position_offset">Test</p> <h1 id="h1">hello world</h1>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM