vue中如何自定义右键菜单详解


Posted in Vue.js onDecember 08, 2020

在所编辑的页面,需要添加右键菜单的元素,绑定contextmenu事件,如下:

<li
  v-for="item in resourceList"
  :key="item.id"
  @click="handleClickFolder(item)"
  @contextmenu.prevent="openMenu($event,item)"
  >
  </li>

在页面编写右键菜单内容:

<ul v-show="visible" :style="{left:left+'px',top:top+'px'}" class="contextmenu">
 <!-- <li v-if="rightClickItem.fileType==99" @click="handleClickFolder(rightClickItem)">打开</li>
 <li @click="handleDelete(rightClickItem)">删除</li>
 <li @click="handleDownloadFile(rightClickItem)" v-if="rightClickItem.fileType!=99">下载</li>
 <li @click="handlePreviewFile(rightClickItem)" v-if="rightClickItem.fileType!=99">预览</li>
 <li @click="handleUpdate(rightClickItem)">编辑</li> -->
 <li>内容</li>
 </ul>

在data()中定义需要的变量属性

data() { 
 return {
 visible: false,
 top: 0,
 left: 0
 }
}

观察visible的变化,来触发关闭右键菜单,调用关闭菜单的方法

watch: {
 visible(value) {
 if (value) {
 document.body.addEventListener('click', this.closeMenu)
 } else {
 document.body.removeEventListener('click', this.closeMenu)
 }
 }
 }

在method中定义打开右键菜单和关闭右键菜单的两个方法

openMenu(e, item) {
 this.rightClickItem = item;

 let x = e.clientX;
 let y = e.clientY;

 this.top = y;
 this.left = x;
 
 this.visible = true;
 },
 closeMenu() {
 this.visible = false;
 }

在style中写右键菜单的样式

.contextmenu {
 margin: 0;
 background: #fff;
 z-index: 3000;
 position: fixed;
 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-color: rgb(3, 125, 243);;
 color: white;
}

到此这篇关于vue中如何自定义右键菜单详解的文章就介绍到这了,更多相关vue自定义右键菜单内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
vue + el-form 实现的多层循环表单验证
Nov 25 Vue.js
Vue3+elementui plus创建项目的方法
Dec 01 Vue.js
Vue实现手机号、验证码登录(60s禁用倒计时)
Dec 19 Vue.js
vue绑定class的三种方法
Dec 24 Vue.js
vue 页面跳转的实现方式
Jan 12 Vue.js
Vue项目打包部署到apache服务器的方法步骤
Feb 01 Vue.js
Vue2.x-使用防抖以及节流的示例
Mar 02 Vue.js
详解Vue的列表渲染
Nov 20 Vue.js
vue中的可拖拽宽度div的实现示例
Apr 08 Vue.js
分享一个vue实现的记事本功能案例
Apr 11 Vue.js
vue router 动态路由清除方式
May 25 Vue.js
ant design vue的form表单取值方法
Jun 01 Vue.js
基于vue与element实现创建试卷相关功能(实例代码)
Dec 07 #Vue.js
vue祖孙组件之间的数据传递案例
Dec 07 #Vue.js
在vue中动态修改css其中一个属性值操作
Dec 07 #Vue.js
在vue中使用inheritAttrs实现组件的扩展性介绍
Dec 07 #Vue.js
vue中利用three.js实现全景图的完整示例
Dec 07 #Vue.js
详解Vue中的自定义指令
Dec 07 #Vue.js
vue-router定义元信息meta操作
Dec 07 #Vue.js
You might like
php5 pdo新改动加载注意事项
2008/09/11 PHP
简单的PHP留言本实例代码
2010/05/09 PHP
php学习笔记之面向对象
2014/11/08 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
2019/03/07 PHP
php框架知识点的整理和补充
2021/03/01 PHP
JavaScript 对任意元素,自定义右键菜单的实现方法
2013/05/08 Javascript
jquery的ajax跨域请求原理和示例
2014/05/08 Javascript
基于jQuery实现自动轮播旋转木马特效
2015/11/02 Javascript
JavaScript数据类型学习笔记
2016/01/25 Javascript
JS实现密码框的显示密码和隐藏密码功能示例
2016/12/26 Javascript
jquery使用EasyUI Tree异步加载JSON数据(生成树)
2017/02/11 Javascript
angular-ngSanitize模块-$sanitize服务详解
2017/06/13 Javascript
Vue iview-admin框架二级菜单改为三级菜单的方法
2018/07/03 Javascript
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
2018/08/28 jQuery
详解Vue源码中一些util函数
2019/04/24 Javascript
vue中实现Monaco Editor自定义提示功能
2019/07/05 Javascript
在Windows系统上搭建Nginx+Python+MySQL环境的教程
2015/12/25 Python
python距离测量的方法
2018/03/06 Python
Python实现的NN神经网络算法完整示例
2018/06/19 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
2019/06/18 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
python中sort和sorted排序的实例方法
2019/08/26 Python
使用matlab或python将txt文件转为excel表格
2019/11/01 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
2020/03/19 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
python list的index()和find()的实现
2020/11/16 Python
css3类选择器之结合元素选择器和多类选择器用法
2017/03/09 HTML / CSS
Nike台湾官方商店:Nike.com (TW)
2017/08/16 全球购物
数字天堂软件测试面试题
2012/12/23 面试题
医院后勤自我鉴定
2013/10/13 职场文书
经理秘书找工作求职信
2013/12/19 职场文书
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
节约用水倡议书
2014/04/16 职场文书
共青团员自我评价范文
2014/09/14 职场文书
USB TYPE-C 或将成为所有智能手机充电标准
2022/04/21 数码科技
clear 万能清除浮动(clearfix:after)
2023/05/21 HTML / CSS