判读鼠标进入和离开的方向

1,076 阅读1分钟

动画.gif

判断鼠标进入方式的思路

1.将元素想象为坐标系,划分x轴和y轴,主要y轴正方向向下

image.png 2.根据下面的图可以看出来,判断是否从右面进入的只需要判读进入的位置的角度是否在A角度之内,同时根据三角函数计算公式对边比邻边可以得出A的角度

image.png

 let div = document.querySelector('.direction');//获取容器
 let content = document.querySelector('.content')
 let rect = div.getBoundingClientRect();//返回容器大小以及距离视口距离的位置信息
 let theta = Math.atan2(rect.height, rect.width);//反正切

atans的描述

image.png

3.计算出鼠标进入位置的信息

 const w = e.offsetX - rect.width / 2; //获取进入位置的X值
 const h = rect.height / 2 - e.offsetY;//获取进入位置的y值
 const angle = Math.atan2(h, w);

4.根据鼠标进入位置的角度判断鼠标是在那个方向进入的

 // 从左上方进入 angle < theta ;从左下方进入angle >= -theata
        if (angle < theta && angle >= -theta) {
            console.log('right');
            content.innerHTML = 'right'
            content.className = 'right content'
        } else if (angle < - theta && angle >= -Math.PI + theta) {
            console.log('bottom');
            content.innerHTML = 'bottom'
            content.className = 'bottom content'
        } else if (angle < Math.PI - theta && angle >= theta) {
            console.log('top');
            content.innerHTML = 'top'
            content.className = 'top content'
        } else {
            console.log('left');
            content.innerHTML = 'left'
            content.className = 'left content'
        }

源码链接 code.juejin.cn/api/raw/738…