Vue自定義元素身上的右鍵事件問題
在制作網(wǎng)頁時,我們經(jīng)常需要自定義右鍵事件,實現(xiàn)我們想要的功能,這里我手寫了一個基于Vue的鼠標右鍵自定義事件,與大家共同分享。
template內容
在自己想要改變鼠標右鍵事件的dom中(這里以div#demo為例)加入一個ul,模擬鼠標右鍵后的彈框。
prevent屬性可以消除右鍵默認事件。
<template>
<div>
<div id="demo" @contextmenu.prevent="openMenu($event)">
<ul v-show="visible" :style="{left:left+'px',top:top+'px'}" class="contextmenu" style="background:red;position:fixed">
<li>歷史記錄1</li>
<li>歷史記錄2</li>
<li>歷史記錄3</li>
<li>歷史記錄4</li>
</ul>
</div>
</div>
</template>
model層
跟蹤鼠標點擊位置控制ul所在的位置,同時在自己的dom上右鍵點擊ul顯示,點擊body后ul隱藏
export default {
data() {
return {
visible: false,
top: 0,
left: 0
}
},
methods: {
openMenu(e) {
console.log(e.clientX);
console.log(e.clientY);
this.left = e.clientX
this.top = e.clientY
this.visible = true
},
closeMenu() {
this.visible = false
}
},
watch: {
visible(value) {
if (value) {
document.body.addEventListener('click', this.closeMenu)
} else {
document.body.removeEventListener('click', this.closeMenu)
}
}
}
}
style問題
這塊比較簡略,就是給div隨便給點樣式,這塊根據(jù)需要改成自己右鍵點擊dom的樣式
#demo {
width: 50px;
height: 50px;
background: pink;
}

注:
- 可以在li元素上添加點擊后的事件。
- ul不一定需要寫在dom內,寫在dom里面方便我們查看該ul屬于哪個dom上的事件,因為ul已經(jīng)脫離文本流,相對鼠標位置定位。fixed相對瀏覽器可視區(qū)移動。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
手寫?Vue3?響應式系統(tǒng)(核心就一個數(shù)據(jù)結構)
這篇文章主要介紹了手寫?Vue3?響應式系統(tǒng)(核心就一個數(shù)據(jù)結構),響應式就是被觀察的數(shù)據(jù)變化的時候做一系列聯(lián)動處理。就像一個社會熱點事件,當它有消息更新的時候,各方媒體都會跟進做相關報道。這里社會熱點事件就是被觀察的目標2022-06-06
Vue中"This dependency was not found"問題的解決方法
這篇文章主要介紹了Vue中"This dependency was not found"的問題的解決方法,需要的朋友可以參考下2018-06-06
vue2使用wangeditor實現(xiàn)手寫輸入功能
這篇文章主要為大家詳細介紹了vue2如何使用wangeditor實現(xiàn)手寫輸入功能,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以了解下2023-12-12

