

Vue 1分钟实现右键菜单,懒人的福音!
source link: https://segmentfault.com/a/1190000040858787
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Vue 1分钟实现右键菜单,懒人的福音!
高效实现需求,避免重复造轮子。今天给大家分享的是,如何在最短的时候内实现右键菜单。方法也很简单,一个插件就可以搞定,话不多说,上效果图:
npm install vue-contextmenujs
yarn add vue-contextmenujs
import Contextmenu from "vue-contextmenujs" Vue.use(Contextmenu);
以element-ui
图标为例实现右键菜单,图标会为被渲染为<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: "前进(F)", disabled: true }, { label: "重新加载(R)", divided: true, icon: "el-icon-refresh" }, { label: "另存为(A)..." }, { label: "打印(P)...", icon: "el-icon-printer" }, { label: "投射(C)...", divided: true }, { label: "使用网页翻译(T)", divided: true, minWidth: 0, children: [{ label: "翻译成简体中文" }, { label: "翻译成繁体中文" }] }, { label: "截取网页(R)", minWidth: 0, children: [ { label: "截取可视化区域", onClick: () => { this.message = "截取可视化区域"; console.log("截取可视化区域"); } }, { label: "截取全屏" } ] }, { label: "查看网页源代码(V)", icon: "el-icon-view" }, { label: "检查(N)" } ], event, // 鼠标事件信息 customClass: "custom-class", // 自定义菜单 class zIndex: 3, // 菜单样式 z-index minWidth: 230 // 主菜单最小宽度 }); return false; } } }; </script>
菜单选项都在items
数组里面,可根据需要自行配置。这时候点击右键,菜单弹窗就神奇地出现了,是不是很简单!
自定义样式
打开控制台,查看元素即可查看到菜单的各个 class 名称。最外层的 class 为上面的customClass
属性设置的值,样式可根据需求自行调整。
<style> .custom-class .menu_item__available:hover, .custom-class .menu_item_expand { background: #ffecf2 !important; color: #ff4050 !important; } </style>
以上就基本使用方法,是不是比自己封装节省了大把时间。注意菜单会在点击左键或者滚轮滚动时自动销毁,同时也可调用this.$contextmenu.destroy()
在其他场景自行销毁 。以下是插件的参数配置:
MenuOptions 菜单属性
属性描述类型可选值默认值items菜单结构信息MenuItemOptions[]
——event鼠标事件信息Event
——x菜单显示X坐标, 存在event
则失效number
—0
y菜单显示Y坐标, 存在event
则失效number
—0
zIndex菜单样式z-index
number
—2
customClass自定义菜单classstring
——minWidth主菜单最小宽度number
—150
MenuItemOptions 选项属性
属性描述类型可选值默认值label菜单项名称string
——icon菜单项图标, 生成<i class="icon"></i>
元素string
——disabled是否禁用菜单项boolean
—false
divided是否显示分割线boolean
—false
customClass自定义子菜单classstring
——minWidth子菜单最小宽度number
—150
onClick菜单项点击事件Function()
——children子菜单结构信息MenuItemOptions[]
——分享到此结束,如果对你有所帮助,不要忘了点个赞哦~
听说点赞的人今年人品爆发,年终奖翻倍🤩
Recommend
-
32
在 Finder 的右键菜单中添加「Open in VSCode」 发表于 2020 年 04 月 22 日...
-
25
用 macOS 系统的苹果电脑用户都知道,macOS 某些地方确实没 Windows 方便,比如右键菜单,没有复制粘贴之类的菜单,...
-
61
删除“Open in Windows Terminal”右键菜单 最近发现右键菜单中多了一个"Open in Windows Terminal"选项,如下图所示...
-
21
WPF 列表右键菜单比较符合 MVVM 的命令绑定方法群里小伙伴问我如何在 ListView 的右击的时候知道右击的是哪一项,他想要获取对应的行信息。他使用的是 GridView 做的,于是我告诉他需要自己写 ItemContainerStyle 在 GridViewRowPresenter 里添加右键的逻...
-
7
IT之家2 月 4 日消息 当用户想在 Microsoft Edge 中执行一个特定的操作时,在上下文(右键)菜单上有太多的项目会很烦人。而且在用户的上下文菜单上至少有一两个选项是用户从来没有使用过的,特别是当用户在浏览器中阅读 PDF 文档时。 在 Canary...
-
8
WebView2简单试用(八)—— 右键菜单 默认菜单: WebView2本身携带了类似Edge的右键菜单,但有的时候我们需要对...
-
7
给 Mac 添加右键菜单「使用 VSCode 打开」 — 码志最终的实现效果是在文件 / 文件夹上右击时,会出现菜单项「用 VSCode 打开」,点击后会启动 Visual Studio Code 打开对应的文件 / 文件夹。打开「自动操作.app」,就是小机器人图标那个;
-
9
Sublime Text Sublime Text 2 右键菜单中的实用选项 ...
-
5
Win10无法右键弹出菜单 问题分析:注册表多余子项导致。可能是我之前下载了一些软件,比如:idea、git、webstorm、goland...
-
5
V2EX › Windows win10 可以给右键菜单里面的项目添加快捷键吗 dragonQueen · 3 小时 31...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK