Vue實現(xiàn)鼠標(biāo)懸浮隱藏與顯示圖片效果@mouseenter和@mouseleave事件詳解
前言
前端vue 有個功能是鼠標(biāo)移動到指定item上顯示出來一個編輯和刪除的圖標(biāo)
鼠標(biāo)懸停在列表那么需要有懸浮顯示的列表編輯和刪除icon
文字不好描述,因為是web端錄屏也比較麻煩 這里用截圖說明
圖片說明
功能實現(xiàn)
之前沒做過這種效果,問了一下我的組長-豪哥
他告訴我很簡單,利用vue的@mouseenter 和 @mouseleave事件就可以完美解決
本著這個思路,我去尋求答案,找了很多有關(guān)知識,自己也慢慢摸索 完成了該效果
下面說下實現(xiàn) 附代碼
因為是在列表中完成的某個item的圖標(biāo)隱藏與顯示
這個時候我們需要合index綁定 并且和改條目的id綁定(用來互斥)
這里需要注意一點
@mouseenter
和@mouseleave
方法必須放到父類的div中 才能起效果
我們需要
在js中把id綁定 把index設(shè)置值,默認(rèn)為false 既不顯示
下面js代碼中做了id綁定和給數(shù)組的標(biāo)記賦值的關(guān)系
/** *左邊圖表控制隱藏與顯示 */ const leftIcon = reactive({ inputAry: [] as boolean[] }) const leftIconId = ref() const mouseenter = (index: number, item: SymptomList) => { leftIcon.inputAry[index] = true leftIconId.value = item.id console.log('mouseenter') } const mouseleave = (index: number, item: SymptomList) => { leftIcon.inputAry[index] = false leftIconId.value = item.id; console.log('mouseleave') }
我們在
html中把@mouseenter 和 @mouseleave
事件添加
然后再指定的div標(biāo)簽內(nèi) 做隱藏與顯示的判斷 還是根據(jù)id和當(dāng)前點擊的標(biāo)記位
<div v-for="(item, index) in symptomList" class="item"> <div class="left"> <!-- @mouseenter="mouseenter(index,item)" 在這里綁定index和item數(shù)據(jù)類(這里有我們要的數(shù)據(jù)id)--> <div class="left-div" @mouseenter="mouseenter(index,item)" @mouseleave="mouseleave(index,item)"> <div v-if="editShow.inputAry[index] == true && item.id == diseaseId "> <a-input class="input" v-model:value="inputContent" autofocus="autofocus" :max-length="10" @change="changeInput()" /> <a-button class="commit" @click="handleInputCommit(item,index)"> <template #icon> <check-outlined style="color: #ffffff" /> </template> </a-button> <a-button class="cancel" @click="handleInputCancel(index)"> <template #icon> <close-outlined /> </template> </a-button> </div> <div v-else style="display: flex;"> <div>{{ item.name }}</div> <div class="right-icon" <!-- 這里是item尾部的2個圖標(biāo) 編輯和刪除圖標(biāo) 我們做了2個判斷 第一是==true時,我們才把圖標(biāo)顯示出來 第二:將當(dāng)前點擊的id記錄 --> v-if="leftIcon.inputAry[index] == true && item.id == leftIconId"> <a-button style="color:#676E7C; width: 13.7px ; height: 13.7px;" @click="handleClickEdit(item,index)" type="link"> <template #icon> <edit-outlined /> </template> </a-button> <a-button style="margin-left: 5px; color:#676E7C; width: 13.7px ; height:13.7px;" @click="handleClickDel(item,index)" type="link"> <template #icon> <delete-outlined /> </template> </a-button> </div> </div> </div> </div>
mouseover 和 mouseenter 的區(qū)別
mouseover:當(dāng)鼠標(biāo)移入元素或其子元素都會觸發(fā)事件,有一個重復(fù)觸發(fā),事件疊加過程。對應(yīng)的移除事件是 mouseout
mouseenter:當(dāng)鼠標(biāo)移入元素本身(不包含元素的子元素)會觸發(fā)事件,事件不會疊加。對應(yīng)的移除事件是 mouseleave
hover 事件調(diào)用順序:
mouseover -> mouseenter -> mousemove(hover進(jìn)去之后移動會觸發(fā)) -> mouseout -> mouseleave
用div來演示所有事件方法
<div <!-- 1、進(jìn)入元素 事件會疊加 --> @mouseover="mouseover" <!-- 2、進(jìn)入元素 事件不疊加 --> @mouseenter="mouseenter" <!-- 3、移動 --> @mousemove="mousemove" <!-- 4、離開元素 事件會疊加--> @mouseout="mouseout" <!-- 5、離開元素 事件不疊加 --> @mouseleave="mouseleave" <!-- 6、鼠標(biāo)在元素上 按下 --> @mousedown="mousedown" <!-- 7、鼠標(biāo)在元素上 抬起 --> @mouseup="mouseup" > </div>
總結(jié)
到此這篇關(guān)于Vue實現(xiàn)鼠標(biāo)懸浮隱藏與顯示圖片效果@mouseenter和@mouseleave事件的文章就介紹到這了,更多相關(guān)Vue鼠標(biāo)懸浮隱藏與顯示圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue3+vite+ts使用monaco-editor編輯器的簡單步驟
因為畢設(shè)需要用到代碼編輯器,根據(jù)調(diào)研,我選擇使用monaco-editor代碼編輯器,下面這篇文章主要給大家介紹了關(guān)于vue3+vite+ts使用monaco-editor編輯器的簡單步驟,需要的朋友可以參考下2023-01-01Vue Router動態(tài)路由使用方法總結(jié)
這篇文章主要介紹了Vue Router動態(tài)路由使用方法總結(jié),需要的朋友可以參考下2023-10-10element編輯表單el-radio回顯之后無法選擇的問題解決
今天主要來談一下element-ui編輯表單中的el-radio回顯之后無法選擇的問題,主要涉及到vue的雙向綁定,以及element-ui編輯表單中的el-radio的默認(rèn)類型,感興趣的可以了解一下2021-08-08Vue3使用ref解決GetElementById為空的問題
今天遇到一個問題,就是在Vue3組件中需要獲取template中的元素節(jié)點,使用GetElementById返回的卻是null,網(wǎng)上查找了好些資料,才發(fā)需要使用ref,所以本文給大家介紹了Vue3組件中如何使用ref解決GetElementById為空的問題,需要的朋友可以參考下2023-12-12vue watch深度監(jiān)聽對象實現(xiàn)數(shù)據(jù)聯(lián)動效果
這篇文章主要介紹了vue watch深度監(jiān)聽對象實現(xiàn)數(shù)據(jù)聯(lián)動的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2018-08-08