vue怎么实现右键二级菜单_给大家分享一个实现vue右键菜单的组件。

百度的话会出现两个版本 一个是 vue-contextmenu 还有一个是v-contextmenu

这两个我都用了一下 确切的说我是先用的第一个但是 无法实现添加icon 的功能,所以又找到了第二个。

vue-contextmenu 添加icon需要使用到 font Awesome 但是引入后,修改无法实现icon 的效果,可能是我还不会用 这里我就直接附上链接啦

vue contextmenu

另一个是v contextmenu 这个的使用和功能都相对要比另一个更加全面一点。

cnpm i v-contextmenu -S

可以安装依赖

main.js 全局引用

import contentmenu from 'v-contextmenu'

import 'v-contextmenu/dist/index.css'

Vue.use(contentmenu)

Submenu.vue

菜单1

菜单2

菜单3

菜单5

菜单4

不自动关闭1

不自动关闭2

右键点击此区域

export default {

name: 'Submenu',

props: {

theme: String,

},

methods: {

handleClick (vm, event) {

console.log(vm, event)

},

handleSubmenuShow (vm, placement) {

console.log(vm, placement)

},

},

}

.box {

width: 100%;

}

例子在github中都有提供,大家可以根据自己想要用的样式来自己选择

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我可以帮你写一个Vue 3编写的自定义右键菜单组件。以下是一个简单的示例: 1. 首先,创建一个名为`ContextMenu.vue`的组件文件。 ```vue <template> <div class="context-menu" :style="{ top: `${top}px`, left: `${left}px` }"> <ul> <li v-for="(item, index) in items" :key="index" @click="handleItemClick(item.action)"> {{ item.label }} </li> </ul> </div> </template> <script> export default { props: { items: { type: Array, required: true }, top: { type: Number, required: true }, left: { type: Number, required: true } }, methods: { handleItemClick(action) { // 执行相应的操作 if (action) { this[action](); } }, // 示例操作函数 exampleAction() { console.log("执行了示例操作"); } } }; </script> <style scoped> .context-menu { position: fixed; background-color: #fff; border: 1px solid #ccc; padding: 8px; } </style> ``` 2. 在需要使用右键菜单的地方,引入并使用`ContextMenu`组件。 ```vue <template> <div class="container" @contextmenu.prevent="showContextMenu($event)"> 右键点击此处显示菜单 <ContextMenu v-if="showMenu" :items="menuItems" :top="menuTop" :left="menuLeft" /> </div> </template> <script> import ContextMenu from "@/components/ContextMenu.vue"; export default { components: { ContextMenu }, data() { return { showMenu: false, menuItems: [ { label: "菜单项1", action: "exampleAction" }, { label: "菜单项2", action: "exampleAction" }, { label: "菜单项3", action: "exampleAction" } ], menuTop: 0, menuLeft: 0 }; }, methods: { showContextMenu(event) { event.preventDefault(); this.showMenu = true; this.menuTop = event.clientY; this.menuLeft = event.clientX; }, exampleAction() { console.log("执行了示例操作"); } } }; </script> <style scoped> .container { width: 200px; height: 200px; background-color: lightgray; } </style> ``` 这个示例中,我们创建了一个`ContextMenu`组件,它接收一个菜单项数组和菜单显示的位置作为props。当右键点击触发`@contextmenu.prevent`事件时,显示右键菜单,并根据鼠标位置设置菜单的top和left样式。 请注意,这只是一个简单的示例,你可以根据自己的需求对菜单样式和行为进行进一步的定制。希望对你有所帮助!如果你还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值