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用mixin合并重复代码的实现
Nov 27 Vue.js
Vue实现图书管理小案例
Dec 03 Vue.js
vue中封装axios并实现api接口的统一管理
Dec 25 Vue.js
梳理一下vue中的生命周期
Dec 30 Vue.js
Vue中inheritAttrs的使用实例详解
Dec 31 Vue.js
Vue实现摇一摇功能(兼容ios13.3以上)
Jan 26 Vue.js
vue使用transition组件动画效果的实例代码
Jan 28 Vue.js
Vue包大小优化的实现(从1.72M到94K)
Feb 18 Vue.js
使用vue-element-admin框架从后端动态获取菜单功能的实现
Apr 29 Vue.js
vue使用Google Recaptcha验证的实现示例
Aug 23 Vue.js
vue如何使用模拟的json数据查看效果
Mar 31 Vue.js
使用vuex-persistedstate本地存储vuex
Apr 29 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
PHP基础陷阱题(变量赋值)
2012/09/12 PHP
调试PHP程序的多种方法介绍
2014/11/06 PHP
PHP如何实现跨域
2016/05/30 PHP
微信自定义分享php代码分析
2016/11/24 PHP
PHP中Laravel 关联查询返回错误id的解决方法
2017/04/01 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
2020/04/13 PHP
5秒后跳转到另一个页面的js代码
2013/10/12 Javascript
输入框点击时边框变色效果的实现方法
2016/12/26 Javascript
JS实现仿百度文库评分功能
2017/01/12 Javascript
js实现用户输入的小写字母自动转大写字母的方法
2017/01/21 Javascript
JavaScript常用正则函数用法示例
2017/01/23 Javascript
bootstrap模态框关闭后清除模态框的数据方法
2018/08/10 Javascript
Vue Cli3 创建项目的方法步骤
2018/10/15 Javascript
微信小程序自定义tabBar组件开发详解
2020/09/24 Javascript
React中this丢失的四种解决方法
2019/03/12 Javascript
JS实现处理时间,年月日,星期的公共方法示例
2019/05/31 Javascript
[27:02]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第三场
2014/05/24 DOTA
Python selenium抓取微博内容的示例代码
2018/05/17 Python
Python实现快速傅里叶变换的方法(FFT)
2018/07/21 Python
python爬虫获取百度首页内容教学
2018/12/23 Python
python实现ssh及sftp功能(实例代码)
2020/03/16 Python
html5 视频播放解决方案
2016/11/06 HTML / CSS
施华洛世奇意大利官网:SWAROVSKI意大利
2018/07/23 全球购物
联谊活动策划书
2014/01/26 职场文书
秋季红领巾广播稿
2014/01/27 职场文书
年会搞笑主持词
2014/03/27 职场文书
校庆活动方案
2014/03/31 职场文书
学校文明单位申报材料
2014/05/06 职场文书
专科应届毕业生求职信
2014/06/04 职场文书
市场营销专业应届生自荐信
2014/06/19 职场文书
党员对照检查材料整改措施思想汇报
2014/09/26 职场文书
班主任寄语2015
2015/02/26 职场文书
美容院员工规章制度
2015/08/05 职场文书
PyQt5 QThread倒计时功能的实现代码
2021/04/02 Python
MySQL下使用Inplace和Online方式创建索引的教程
2021/05/26 MySQL
使用feign服务调用添加Header参数
2021/06/23 Java/Android