【发布时间】:2018-06-18 09:20:32
【问题描述】:
我想计算鼠标和给定元素边缘之间的距离。所以当鼠标碰到元素的边缘时,值应该是0px;
https://codepen.io/nishaljohn/pen/BVmGbz
var mX, mY, distance,
$distance = $('#distance_text p'),
$element = $('.div1');
function calculateDistance(elem, mouseX, mouseY) {
return Math.floor(Math.sqrt(Math.pow(mouseX - (elem.offset().left+(elem.width()/2)), 2) + Math.pow(mouseY - (elem.offset().top+(elem.height()/2)), 2)));
}
$(document).mousemove(function(e) {
mX = e.pageX;
mY = e.pageY;
distance = calculateDistance($element, mX, mY);
$distance.text(distance);
});
这会考虑到元素的中心,只有当你到达绝对中心时才会读取 0px。
一个 JQuery 插件也可以。
【问题讨论】:
-
给定的代码有什么不工作的地方吗?
-
如果您查看示例,您会看到它仅在到达元素的绝对中心时返回距离为 0,我希望它在鼠标 触摸时读取 0 > 元素,当鼠标在元素内部时。
-
我认为只是数学...添加对象的高度和宽度,高度和宽度。在外面计算它们,然后将它们添加到 calculateDistance...这并不难...
-
@Cristian 对不起,我不太明白您的意思,您能否展示您提出的解决方案的编辑笔?
-
@PereraJohn 好的,我会给出答案
标签: javascript jquery html jquery-ui jquery-plugins