Vue自定義元素身上的右鍵事件問(wèn)題
在制作網(wǎng)頁(yè)時(shí),我們經(jīng)常需要自定義右鍵事件,實(shí)現(xiàn)我們想要的功能,這里我手寫了一個(gè)基于Vue的鼠標(biāo)右鍵自定義事件,與大家共同分享。
template內(nèi)容
在自己想要改變鼠標(biāo)右鍵事件的dom中(這里以div#demo為例)加入一個(gè)ul,模擬鼠標(biāo)右鍵后的彈框。
prevent屬性可以消除右鍵默認(rèn)事件。
<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層
跟蹤鼠標(biāo)點(diǎn)擊位置控制ul所在的位置,同時(shí)在自己的dom上右鍵點(diǎn)擊ul顯示,點(diǎn)擊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問(wèn)題
這塊比較簡(jiǎn)略,就是給div隨便給點(diǎn)樣式,這塊根據(jù)需要改成自己右鍵點(diǎn)擊dom的樣式
#demo { width: 50px; height: 50px; background: pink; }
注:
- 可以在li元素上添加點(diǎn)擊后的事件。
- ul不一定需要寫在dom內(nèi),寫在dom里面方便我們查看該ul屬于哪個(gè)dom上的事件,因?yàn)閡l已經(jīng)脫離文本流,相對(duì)鼠標(biāo)位置定位。fixed相對(duì)瀏覽器可視區(qū)移動(dòng)。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
簡(jiǎn)單談?wù)刅ue 模板各類數(shù)據(jù)綁定
Vue.js 的模板是基于 DOM 實(shí)現(xiàn)的。這意味著所有的 Vue.js 模板都是可解析的有效的 HTML,且通過(guò)一些特殊的特性做了增強(qiáng)。Vue 模板因而從根本上不同于基于字符串的模板,請(qǐng)記住這點(diǎn)。2016-09-09手寫?Vue3?響應(yīng)式系統(tǒng)(核心就一個(gè)數(shù)據(jù)結(jié)構(gòu))
這篇文章主要介紹了手寫?Vue3?響應(yīng)式系統(tǒng)(核心就一個(gè)數(shù)據(jù)結(jié)構(gòu)),響應(yīng)式就是被觀察的數(shù)據(jù)變化的時(shí)候做一系列聯(lián)動(dòng)處理。就像一個(gè)社會(huì)熱點(diǎn)事件,當(dāng)它有消息更新的時(shí)候,各方媒體都會(huì)跟進(jìn)做相關(guān)報(bào)道。這里社會(huì)熱點(diǎn)事件就是被觀察的目標(biāo)2022-06-06vue項(xiàng)目中使用html2canvas解決截圖不全的問(wèn)題
本文主要介紹了vue項(xiàng)目中使用html2canvas解決截圖不全的問(wèn)題2023-11-11Vue通過(guò)v-for實(shí)現(xiàn)年份自動(dòng)遞增
這篇文章主要為大家詳細(xì)介紹了Vue通過(guò)v-for實(shí)現(xiàn)年份自動(dòng)遞增,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09Vue中"This dependency was not found"問(wèn)題的解決方法
這篇文章主要介紹了Vue中"This dependency was not found"的問(wèn)題的解決方法,需要的朋友可以參考下2018-06-06vue2使用wangeditor實(shí)現(xiàn)手寫輸入功能
這篇文章主要為大家詳細(xì)介紹了vue2如何使用wangeditor實(shí)現(xiàn)手寫輸入功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解下2023-12-12