![在这里插入图片描述](https://img-blog.csdnimg.cn/0d0275128dce4ef1849ab3bb51936ec1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAd2VpeGluXzUxNzUxNTIy,size_11,color_FFFFFF,t_70,g_se,x_16)
- 在需要添加右键的页面,绑定contextmenu事件(阻止浏览器默认事件,添加自定义事件)
<div @contextmenu.prevent.native="openMenu($event)">
....
</div>
- 在页面编写右键菜单的内容
<ul v-show="visible" :style="{left:left+'px',top:top+'px'}" class="contextmenu">
<li @click="test">添加节点</li>
<li @click="test">添加节点</li>
</ul>
- 在data()中定义需要的变量属性
data() {
return {
visible: false,
top: 0,
left: 0
}
}
- 创建监听事件,来触发关闭右键菜单的方法
watch: {
visible(value) {
if (value) {
document.body.addEventListener('click', this.closeMenu)
} else {
document.body.removeEventListener('click', this.closeMenu)
}
}
},
- 打开和关闭右键菜单的两个方法
//start
openMenu(e) {
var x = e.pageX;
var y = e.pageY;
this.top = y;
this.left = x;
this.visible = true;//在这里控制右键菜单的打开
},
//close
closeMenu() {
this.visible = false;
},
- 样式
.contextmenu {
margin: 0;
background: #fff;
z-index: 3000;
position: absolute;
list-style-type: none;
padding: 5px 0;
border-radius: 4px;
font-size: 12px;
font-weight: 400;
color: #333;
box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, 0.3);
}
.contextmenu li {
margin: 0;
padding: 7px 16px;
cursor: pointer;
}
.contextmenu li:hover {
background: #eee;
}