DIV的失去焦點(diǎn)(blur)實(shí)現(xiàn)方法

用防抖實(shí)現(xiàn)DIV鼠標(biāo)移出消失
由于div標(biāo)簽本身不支持onblur事件,所以對(duì)于點(diǎn)擊一個(gè)按鈕彈出的div,我們想要當(dāng)這個(gè)div失去焦點(diǎn)的時(shí)候,讓它消失不能使用的onblur來(lái)實(shí)現(xiàn)。
但是可以利用onmouseout和事件來(lái)實(shí)現(xiàn)DIV失去焦點(diǎn)消失的功能。直接使用onmouseout來(lái)實(shí)現(xiàn)移出消失可能會(huì)有一個(gè)問(wèn)題:假設(shè)你的按鈕的位置和彈出的div的位置不是重合的那么會(huì)導(dǎo)致鼠標(biāo)移動(dòng)就會(huì)馬上去觸發(fā)onmouseout事件,從而沒(méi)什么卵用。
利用防抖、onmouseout、onmouseover組合來(lái)實(shí)現(xiàn)一個(gè)體驗(yàn)很好的blur事件
/** *鼠標(biāo)移動(dòng)過(guò)div事件 */ function moveOverEvent(ele,outTimer) { let overTimer = null; return function(){ clearTimeout(outTimer); //div沒(méi)有消失的情況下,在移動(dòng)進(jìn)來(lái)div,那么就清除上次移出的事件 clearTimeout(overTimer); //防抖 overTimer = setTimeout(()=>{ ele.style.display = "block"; },500); } } /** * 鼠標(biāo)移出 */ function moveOutEvent(ele,outTimer) { return function(){ clearTimeout(outTimer); //防抖 outTimer = setTimeout(()=>{ //移動(dòng)出去后等500ms,在消失這div ele.style.display = "none"; },500); } }
然后無(wú)意中發(fā)現(xiàn)一個(gè)可以通過(guò)給div添加tabindex屬性,從而實(shí)現(xiàn)blur事件,所以上面的代碼可能是白寫(xiě)了。(PS 我感覺(jué)上面的體驗(yàn)會(huì)好一些,減少了很多誤觸)
//設(shè)置了tabindex后,元素默認(rèn)加虛線,通過(guò)ouline=0進(jìn)行去除(IE設(shè)置hidefocus="true") <div tabindex="0" outline=0" hidefocus="true"></div>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
- HTML表格用于在網(wǎng)頁(yè)上展示數(shù)據(jù),通過(guò)標(biāo)簽及其相關(guān)標(biāo)簽來(lái)創(chuàng)建,表格由行和列組成,每一行包含一個(gè)或多個(gè)單元格,單元格可以包含文本、圖像、鏈接等元素,本文將詳細(xì)介紹HTML表格2025-03-12
- 本文介紹了三種禁止HTML頁(yè)面滾動(dòng)的方法:通過(guò)CSS的overflow屬性、使用JavaScript的滾動(dòng)事件監(jiān)聽(tīng)器以及使用CSS的position:fixed屬性,每種方法都有其適用場(chǎng)景和優(yōu)缺點(diǎn),感興2025-02-24
使用HTML和CSS實(shí)現(xiàn)文字鏤空效果的代碼示例
在 Web 開(kāi)發(fā)中,文本的視覺(jué)效果是提升用戶體驗(yàn)的重要因素之一,通過(guò) CSS 技巧,我們可以創(chuàng)造出許多獨(dú)特的效果,例如文字鏤空效果,本文將帶你一步一步實(shí)現(xiàn)一個(gè)簡(jiǎn)單的文字鏤空2024-11-17Html去除a標(biāo)簽的默認(rèn)樣式的操作代碼
在Html中,a標(biāo)簽?zāi)J(rèn)的超鏈接樣式是藍(lán)色字體配下劃線,這可能不滿足所有設(shè)計(jì)需求,如需去除這些默認(rèn)樣式,可以通過(guò)CSS來(lái)實(shí)現(xiàn),本文給大家介紹Html去除a標(biāo)簽的默認(rèn)樣式的操作代碼2024-09-25HTML文本域如何設(shè)置為禁止用戶手動(dòng)拖動(dòng)
在HTML中,可以通過(guò)設(shè)置CSS的resize屬性為none,來(lái)禁止用戶手動(dòng)拖動(dòng)文本域(textarea)的大小,這種方法簡(jiǎn)單有效,適用于大多數(shù)現(xiàn)代瀏覽器,但需要在老舊瀏覽器中進(jìn)行測(cè)試以確保2024-09-25如何通過(guò)HTML/CSS 實(shí)現(xiàn)各類進(jìn)度條的功能
本文詳細(xì)介紹了如何利用HTML和CSS實(shí)現(xiàn)多種風(fēng)格的進(jìn)度條,包括基礎(chǔ)的水平進(jìn)度條、環(huán)形進(jìn)度條以及球形進(jìn)度條等,還探討了如何通過(guò)動(dòng)畫(huà)增強(qiáng)視覺(jué)效果,內(nèi)容涵蓋了使用HTML原生標(biāo)簽2024-09-19HTML中Canvas關(guān)鍵知識(shí)點(diǎn)總結(jié)
Canvas 提供了一套強(qiáng)大的 2D 繪圖 API,適用于各種圖形繪制、圖像處理和動(dòng)畫(huà)制作,可以幫助你創(chuàng)建復(fù)雜且高效的網(wǎng)頁(yè)圖形應(yīng)用,這篇文章主要介紹了HTML中Canvas關(guān)鍵知識(shí)點(diǎn)總結(jié)2024-06-03html table+css實(shí)現(xiàn)可編輯表格的示例代碼
本文主要介紹了html table+css實(shí)現(xiàn)可編輯表格的示例代碼,主要使用HTML5的contenteditable屬性,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)2024-03-06HTML中使用Flex布局實(shí)現(xiàn)雙行夾批效果
本文主要介紹了HTML中使用Flex布局實(shí)現(xiàn)雙行夾批效果,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)2024-02-22HTML+CSS實(shí)現(xiàn)炫酷登錄切換的項(xiàng)目實(shí)踐
在網(wǎng)站開(kāi)發(fā)中,登錄頁(yè)面是必不可少的一部分,本文就來(lái)介紹一下HTML+CSS實(shí)現(xiàn)登錄切換,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需2024-02-02