时间:2021-05-08
用防抖实现DIV鼠标移出消失
由于div标签本身不支持onblur事件,所以对于点击一个按钮弹出的div,我们想要当这个div失去焦点的时候,让它消失不能使用的onblur来实现。
但是可以利用onmouseout和事件来实现DIV失去焦点消失的功能。直接使用onmouseout来实现移出消失可能会有一个问题:假设你的按钮的位置和弹出的div的位置不是重合的那么会导致鼠标移动就会马上去触发onmouseout事件,从而没什么卵用。
利用防抖、onmouseout、onmouseover组合来实现一个体验很好的blur事件
/** *鼠标移动过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 我感觉上面的体验会好一些,减少了很多误触)
//设置了tabindex后,元素默认加虚线,通过ouline=0进行去除(IE设置hidefocus="true")<div tabindex="0" outline=0" hidefocus="true"></div>以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一、当元素失去焦点时发生blur事件。实例:jQueryblur()方法添加函数到blur事件。当字段失去焦点时发生blur事件:$("input").blur
看本文得先了解以下几个事件(摘自w3c)。blur事件:当元素失去焦点时发生blur事件。focus事件:focus()方法用于赋予文本域焦点(也值让某些元素得
焦点事件一般利用这些事件与document.hasFocus()方法和document.activeElement属性配合。主要有:blur:元素失去焦点,不会
AngularJSng-blur指令AngularJS实例当输入框失去焦点(onblur)时执行表达式:{{count}}实例中"count"变量记录了失去焦点
实例当输入域失去焦点(blur)时改变其颜色:$("input").blur(function(){$("input").css("background-col