oa1.onmousemove = function (ev) { var oEvnt = ev || event; var x = oEvnt.clientX - oa1.offsetLeft; var y = oEvnt.clientY - oa1.offsetTop; console.log(x, y); oa2.style.left = -(x * 2 - 100) + 'px';//问题用clientWidth为什么是NAN oa2.style.top = -(y * 2 - 100) + 'px'; if (x >= oa1.clientWidth - (oDiv.clientWidth / 2)) { oDiv.style.top = oa1.clientHeight - oDiv.clientHeight + "px"; } else { oDiv.style.top = y - 50 + "px"; } if (oEvnt.clientY - oa1.offsetTop >= oa1.clientHeight - oDiv.clientHeight / 2) { oDiv.style.left = oa1.clientWidth - oDiv.clientWidth + "px" } else { oDiv.style.left = x - 50 + "px"; } };在上面的if条件我想的是当鼠标划到离a标签边距只有50px就让div的top值固定为一个值。上面只是部分代码。也许我用判断语句不是很合适,请教这位大神如何解决?
1 回答
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
如果想判断范围,比如说,小矩形(inRect)必须在大矩形内部(outRect) 定位的情况,可以这样处理
inRect.x = getInLeft(); // 根据运算得到理论 x 值,可能超出范围,比如为负
inRect.y = getInTop();
inRect.x = Math.min(Math.max(0, inRect.x), outRect.right - inRect.width);
inRect.y = Math.min(Math.max(0, inRect.y), outRect.bottom - inRect.height);
// 其中 outRect.right 的值应该会算吧
添加回答
举报
0/150
提交
取消