javascript - 如何在居中的 div 中获取光标位置?

标签 javascript jquery html css

我正在制作一个绘图应用程序,我必须将它居中。

检测光标位置我用过

$('#drawbox').mousedown(function(e){
    paint = true;

    var mouseX = e.pageX - this.offsetLeft;
    var mouseY = e.pageY - this.offsetTop;

    addClick(e.pageX-this.offsetLeft, e.pageY-this.offsetTop);
    redraw();
});

drawbox div 包裹在具有以下样式的居中 div 中

position:relative;
margin:auto;
text=align:center;

这导致我的绘图超出范围,出于某些原因,它在没有居中包装 div 的情况下工作正常。谢谢你的帮助

这是演示用的 fiddle

https://jsfiddle.net/ok0ohbxj/

最佳答案

引用您在问题评论中发布的 fiddle ,问题是您对 offsetTop 的使用:

The HTMLElement.offsetTop read-only property returns the distance of the current element relative to the top of the offsetParent node.

在您的情况下,offsetParent 节点是包装容器 .centerHelper 而不是您的文档。

由于您已经在使用 jQuery,我建议改用 $('drawbox').offset(),它返回相对于文档的偏移量:

$('#drawbox').mousedown(function(e){
    paint = true;

    var mouseX = e.pageX - $('#drawbox').offset().left;
    var mouseY = e.pageY - $('#drawbox').offset().top;
    addClick(mouseX, mouseY);
    redraw();
});

$('#drawbox').mousemove(function(e){
    if (paint){
        var mouseX = e.pageX - $('#drawbox').offset().left;
        var mouseY = e.pageY - $('#drawbox').offset().top;
        addClick(mouseX,mouseY, true);
        redraw();
    }
});

还有一个 fiddle 供您试用:https://jsfiddle.net/6gwnexjL/

关于javascript - 如何在居中的 div 中获取光标位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45531410/

相关文章:

javascript - 在 javascript 和 PHP 之间发送 JSON 字符串的正确方法是什么?

javascript - 在一组弹出窗口上显示 Bootstrap 模式

Javascript 响应式视频高度/宽度

javascript - CSS : round_div is not responsive to its parent div

javascript - 防止使用 setter 进行访问

javascript - 为什么我会收到 self.description(...) is undefined ?

javascript - 用于在 DOM 中移动元素的通用脚本

mysql - 从逗号分隔值获取特定值

html - 在响应式布局中指定高度

javascript - 将选中项目的类名查询为数组?