为了账号安全,请及时绑定邮箱和手机立即绑定

if里面的判断不理想,请大神出个解决方案?

if里面的判断不理想,请大神出个解决方案?

泛舟湖上清波郎朗 2018-09-17 07:07:38
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 的值应该会算吧


查看完整回答
反对 回复 2018-10-10
  • 1 回答
  • 0 关注
  • 561 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信