vue實(shí)現(xiàn)右鍵菜單欄
本文實(shí)例為大家分享了vue實(shí)現(xiàn)右鍵菜單欄的具體代碼,供大家參考,具體內(nèi)容如下
vue實(shí)現(xiàn)右鍵菜單欄和原生js大同小異,都是需要明白兩個(gè)點(diǎn)
1.contextmenu事件是鼠標(biāo)的右鍵點(diǎn)擊事件
2.要阻止瀏覽器的默認(rèn)右鍵事件
代碼如下
// methods rightShow() { ?? ?let menu = this.$refs.msgRightMenu ?? ?this.isPersoncontextMenus = true ?? ?var evt = event || window.event; ?? ??? ?var clientWidth = document.documentElement.clientWidth || document.body.clientWidth ; ?? ??? ?var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft; ?? ? ?? ??? ?var clientHeight = document.documentElement.clientHeight || document.body.clientHeight ; ?? ??? ?var scrollTop = document.documentElement.scrollTop || document.body.scrollTop ; ?? ? ?? ??? ?//給left和top分別賦值為鼠標(biāo)的位置; ?? ??? ?menu.style.left = evt.pageX+"px"; ?? ??? ?menu.style.top = evt.pageY+"px"; ?? ??? ?//如果鼠標(biāo)右邊放不下菜單,就把left的值的改了 ?? ??? ?if(evt.pageX+100>clientWidth+scrollLeft){//菜單應(yīng)該在鼠標(biāo)左邊; ?? ??? ??? ?var left1 = evt.pageX-100; ?? ??? ??? ?menu.style.left = left1+"px"; ?? ??? ?} ?? ??? ?//如果鼠標(biāo)下邊放不下菜單,就把top的值的改了 ?? ??? ?if(evt.pageY+100>clientHeight+scrollTop){ ?? ??? ??? ?var top1 = (evt.pageY-100); ?? ??? ??? ?menu.style.top = top1+"px"; ?? ??? ?} ?? ? ?? ??? ?menu.style.display = "block"; }, showNo(){ ?? ?let menu = this.$refs.msgRightMenu ?? ?menu.style.display = "none"; }
//css樣式直供參考,根據(jù)自己的需要寫(xiě)樣式 #menu{ ?? ?list-style: none; ?? ?margin: 0px; ?? ?padding: 0px; ?? ?position: absolute; ?? ?display: none; ?? ?width: 100px; ?? ?height: 100px; ?? ?background-color: gray; } #menu li{ ?? ?margin: 0px; ?? ?padding: 0px; }
//html <div @click.self="showNo">//這個(gè)是最外層的盒子,加self修飾符可以不與其他事件沖突 ?? ??? ?<input type="text" @contextmenu.prevent="rightShow">?? ?//這里的prevent修飾符可以直接阻止瀏覽器的默認(rèn)行為 ?? ??? ??? ?<ul id="menu" ref="msgRightMenu" v-show="isPersoncontextMenus">//isPersoncontextMenus別忘了在data里定義這個(gè)變量 ?? ??? ??? ??? ?<li>魚(yú)香肉絲</li> ?? ??? ??? ??? ?<li>醋溜土豆絲</li> ?? ??? ??? ??? ?<li>麻辣小龍蝦</li> ?? ??? ??? ??? ?<li>回鍋肉</li> ?? ??? ??? ?</ul> </div>
效果
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- vue頂部菜單欄實(shí)現(xiàn)小結(jié)
- vue+el-menu實(shí)現(xiàn)菜單欄無(wú)限多層級(jí)分類(lèi)
- 如何利用Vue3管理系統(tǒng)實(shí)現(xiàn)動(dòng)態(tài)路由和動(dòng)態(tài)側(cè)邊菜單欄
- vue如何實(shí)現(xiàn)自定義底部菜單欄
- vue列表單項(xiàng)展開(kāi)收縮功能之this.$refs的詳解
- Vue2(三)實(shí)現(xiàn)子菜單展開(kāi)收縮,帶動(dòng)畫(huà)效果實(shí)現(xiàn)方法
- vuejs實(shí)現(xiàn)折疊面板展開(kāi)收縮動(dòng)畫(huà)效果
- vue2左側(cè)菜單欄收縮展開(kāi)功能
相關(guān)文章
vuex 動(dòng)態(tài)注冊(cè)方法 registerModule的實(shí)現(xiàn)
這篇文章主要介紹了vuex 動(dòng)態(tài)注冊(cè)方法 registerModule的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07在vue項(xiàng)目中(本地)使用iconfont字體圖標(biāo)的三種方式總結(jié)
這篇文章主要介紹了在vue項(xiàng)目中(本地)使用iconfont字體圖標(biāo)的三種方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09vue-quill-editor富文本編輯器上傳視頻功能詳解
需求需要實(shí)現(xiàn)富文本的功能,同時(shí)富文本中還可以上傳視頻和圖片,選來(lái)選去最后決定了用這個(gè)富文本編輯器,下面這篇文章主要給大家介紹了關(guān)于vue-quill-editor富文本編輯器上傳視頻功能的相關(guān)資料,需要的朋友可以參考下2023-05-05詳解vue 在移動(dòng)端體驗(yàn)上的優(yōu)化解決方案
這篇文章主要介紹了vue 在移動(dòng)端體驗(yàn)上的優(yōu)化解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05