DIV的失去焦点(blur)实现方法

用防抖实现DIV鼠标移出消失

由于div标签本身不支持onblur事件,所以对于点击一个按钮弹出的div,我们想要当这个div失去焦点的时候,让它消失不能使用的onblur来实现。

但是可以利用onmouseout和事件来实现DIV失去焦点消失的功能。直接使用onmouseout来实现移出消失可能会有一个问题:假设你的按钮的位置和弹出的div的位置不是重合的那么会导致鼠标移动就会马上去触发onmouseout事件,从而没什么卵用。

利用防抖、onmouseout、onmouseover组合来实现一个体验很好的blur事件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
 *鼠标移动过div事件
 */
function moveOverEvent(ele,outTimer) {
    let overTimer = null;
    return function(){
        clearTimeout(outTimer);     //div没有消失的情况下,在移动进来div,那么就清除上次移出的事件
        clearTimeout(overTimer);    //防抖
        overTimer = setTimeout(()=>{       
            ele.style.display = "block";
        },500);                    
    }
}
/**
 * 鼠标移出
 */
function moveOutEvent(ele,outTimer) {
    return function(){
        clearTimeout(outTimer);         //防抖
        outTimer = setTimeout(()=>{     //移动出去后等500ms,在消失这div
            ele.style.display = "none";
        },500);
    }
}

然后无意中发现一个可以通过给div添加tabindex属性,从而实现blur事件,所以上面的代码可能是白写了。(PS 我感觉上面的体验会好一些,减少了很多误触)

1
2
//设置了tabindex后,元素默认加虚线,通过ouline=0进行去除(IE设置hidefocus="true")
<div></div>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持IT俱乐部。

本文收集自网络,不代表IT俱乐部立场,转载请注明出处。https://www.2it.club/navsub/html/13668.html
上一篇
下一篇
联系我们

联系我们

在线咨询: QQ交谈

邮箱: 1120393934@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部