1分鐘Vue實(shí)現(xiàn)右鍵菜單
高效實(shí)現(xiàn)需求,避免重復(fù)造輪子。今天給大家分享的是,如何在最短的時(shí)候內(nèi)實(shí)現(xiàn)右鍵菜單。方法也很簡單,一個(gè)插件就可以搞定,話不多說,上效果圖:
效果圖

安裝
npm install vue-contextmenujs
或
yarn add vue-contextmenujs
使用
import Contextmenu from "vue-contextmenujs" Vue.use(Contextmenu);
代碼實(shí)現(xiàn)
以element-ui圖標(biāo)為例實(shí)現(xiàn)右鍵菜單,圖標(biāo)會(huì)為被渲染為<i class="icon"></i>,代碼如下:
<template>
<div style="width:100vw;height:100vh" @contextmenu.prevent="onContextmenu"></div>
</template>
<script>
import Vue from 'vue'
import Contextmenu from "vue-contextmenujs"
Vue.use(Contextmenu);
export default {
methods: {
onContextmenu(event) {
this.$contextmenu({
items: [
{
label: "返回(B)",
onClick: () => {
this.message = "返回(B)";
console.log("返回(B)");
}
},
{ label: "前進(jìn)(F)", disabled: true },
{ label: "重新加載(R)", divided: true, icon: "el-icon-refresh" },
{ label: "另存為(A)..." },
{ label: "打印(P)...", icon: "el-icon-printer" },
{ label: "投射(C)...", divided: true },
{
label: "使用網(wǎng)頁翻譯(T)",
divided: true,
minWidth: 0,
children: [{ label: "翻譯成簡體中文" }, { label: "翻譯成繁體中文" }]
},
{
label: "截取網(wǎng)頁(R)",
minWidth: 0,
children: [
{
label: "截取可視化區(qū)域",
onClick: () => {
this.message = "截取可視化區(qū)域";
console.log("截取可視化區(qū)域");
}
},
{ label: "截取全屏" }
]
},
{ label: "查看網(wǎng)頁源代碼(V)", icon: "el-icon-view" },
{ label: "檢查(N)" }
],
event, // 鼠標(biāo)事件信息
customClass: "custom-class", // 自定義菜單 class
zIndex: 3, // 菜單樣式 z-index
minWidth: 230 // 主菜單最小寬度
});
return false;
}
}
};
</script>
菜單選項(xiàng)都在items數(shù)組里面,可根據(jù)需要自行配置。這時(shí)候點(diǎn)擊右鍵,菜單彈窗就神奇地出現(xiàn)了,是不是很簡單!
自定義樣式
打開控制臺(tái),查看元素即可查看到菜單的各個(gè) class 名稱。最外層的 class 為上面的customClass屬性設(shè)置的值,樣式可根據(jù)需求自行調(diào)整。
<style>
.custom-class .menu_item__available:hover,
.custom-class .menu_item_expand {
background: #ffecf2 !important;
color: #ff4050 !important;
}
</style>

總結(jié)
以上就基本使用方法,是不是比自己封裝節(jié)省了大把時(shí)間。注意菜單會(huì)在點(diǎn)擊左鍵或者滾輪滾動(dòng)時(shí)自動(dòng)銷毀,同時(shí)也可調(diào)用this.$contextmenu.destroy()在其他場(chǎng)景自行銷毀 。以下是插件的參數(shù)配置:
MenuOptions 菜單屬性

MenuItemOptions 選項(xiàng)屬性

到此這篇關(guān)于1分鐘Vue實(shí)現(xiàn)右鍵菜單的文章就介紹到這了,更多相關(guān)Vue 右鍵菜單內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue.js 底部導(dǎo)航欄 一級(jí)路由顯示 子路由不顯示的解決方法
下面小編就為大家分享一篇vue.js 底部導(dǎo)航欄 一級(jí)路由顯示 子路由不顯示的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-03-03
element?table?表格控件實(shí)現(xiàn)單選功能
本文主要介紹了element?table?表格控件實(shí)現(xiàn)單選功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
詳解TypeScript+Vue 插件 vue-class-component的使用總結(jié)
這篇文章主要介紹了TypeScript+Vue 插件 vue-class-component的使用總結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02
詳解vue.js移動(dòng)端導(dǎo)航navigationbar的封裝
本篇文章主要介紹了vue.js移動(dòng)端導(dǎo)航navigationbar的封裝,具有一定的參考價(jià)值,有興趣的可以了解一下2017-07-07
VUE對(duì)接deepseekAPI調(diào)用方式
文章介紹了如何在Vue項(xiàng)目中對(duì)接DeepSeek API,包括在開放平臺(tái)注冊(cè)賬號(hào)申請(qǐng)APIKey、安裝axios庫、創(chuàng)建API調(diào)用函數(shù)以及在Vue組件中調(diào)用該函數(shù)2025-01-01

