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 相关文章推荐
快速解决vue2+vue-cli3项目ie兼容的问题
Nov 17 Vue.js
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
Nov 20 Vue.js
vuex的数据渲染与修改浅析
Nov 26 Vue.js
Vue 实现一个简单的鼠标拖拽滚动效果插件
Dec 10 Vue.js
Vue在H5 项目中使用融云进行实时个人单聊通讯
Dec 14 Vue.js
如何在vue中使用kindeditor富文本编辑器
Dec 19 Vue.js
Vue+Bootstrap实现简易学生管理系统
Feb 09 Vue.js
vue实现倒计时功能
Mar 24 Vue.js
vue backtop组件的实现完整代码
Apr 07 Vue.js
详解Vue的列表渲染
Nov 20 Vue.js
详解Vue项目的打包方式(生成dist文件)
Jan 18 Vue.js
Vue ECharts实现机舱座位选择展示功能
May 15 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
中英文字符串翻转函数
2008/12/09 PHP
三个类概括PHP的五种设计模式
2012/09/05 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
2015/12/31 PHP
JavaScript编程开发中的五个实用小技巧
2010/07/22 Javascript
基于Jquery的实现回车键Enter切换焦点
2010/09/14 Javascript
关于jquery中全局函数each使用介绍
2013/12/10 Javascript
JQuery标签页效果实例详解
2015/12/24 Javascript
JavaScript数据结构与算法之栈与队列
2016/01/29 Javascript
javascript基础知识分享之类与函数化
2016/02/13 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
2016/07/04 Javascript
基于jQuery实现淡入淡出效果轮播图
2020/07/31 Javascript
解析NodeJs的调试方法
2016/12/11 NodeJs
NodeJS测试框架mocha入门教程
2017/03/28 NodeJs
ExtJs的Ext.Ajax.request实现waitMsg等待提示效果
2017/06/14 Javascript
JavaScript实现简单动态进度条效果
2018/04/06 Javascript
vue移动端的左右滑动事件详解
2020/06/17 Javascript
深入理解python对json的操作总结
2017/01/05 Python
浅谈Python中的可变对象和不可变对象
2017/07/07 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
2017/07/11 Python
Python实现的朴素贝叶斯分类器示例
2018/01/06 Python
python3调用R的示例代码
2018/02/23 Python
python3第三方爬虫库BeautifulSoup4安装教程
2018/06/19 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
2020/03/19 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
2020/05/11 Python
Python抓包并解析json爬虫的完整实例代码
2020/11/03 Python
马来西亚在线药房:RoyalePharma
2019/12/01 全球购物
德国苹果商店:MacTrade
2020/05/18 全球购物
医学生临床实习自我评价
2014/03/07 职场文书
中秋寄语大全
2014/04/11 职场文书
小学生个人先进事迹材料
2014/05/08 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
父亲节感言
2015/08/03 职场文书
高中生社会实践心得体会
2016/01/14 职场文书
关于React Native使用axios进行网络请求的方法
2021/08/02 Javascript
经典《舰娘》游改全新动画预告 预定11月开播
2022/04/01 日漫