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

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值固定为一个值。

https://img2.mukewang.com/5bbd6b190001510e06990474.jpg

上面只是部分代码。也许我用判断语句不是很合适,请教这位大神如何解决?

泛舟湖上清波郎朗
浏览 563回答 1
1回答

肥皂起泡泡

如果想判断范围,比如说,小矩形(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 的值应该会算吧
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript