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防抖与节流
Nov 24 Vue.js
vuex的数据渲染与修改浅析
Nov 26 Vue.js
基于vue项目设置resolves.alias: '@'路径并适配webstorm
Dec 02 Vue.js
vue实现倒计时功能
Mar 24 Vue.js
vue3中的组件间通信
Mar 31 Vue.js
浅谈vue2的$refs在vue3组合式API中的替代方法
Apr 18 Vue.js
关于vue中如何监听数组变化
Apr 28 Vue.js
Vue项目中如何封装axios(统一管理http请求)
May 02 Vue.js
vue实现锚点定位功能
Jun 29 Vue.js
如何用vue实现网页截图你知道吗
Nov 17 Vue.js
前端vue+express实现文件的上传下载示例
Feb 18 Vue.js
vue/cli 配置动态代理无需重启服务的方法
May 20 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开启gzip页面压缩实例
2013/06/09 PHP
php实现的简单检验登陆类
2015/06/18 PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
2020/01/04 PHP
javascript Array数组对象的扩展函数代码
2010/05/22 Javascript
javascript 系统文件夹文件操作及参数介绍
2013/01/08 Javascript
jquery 选择器引擎sizzle浅析
2013/02/06 Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
2013/05/06 Javascript
div当滚动到页面顶部的时候固定在顶部实例代码
2013/05/27 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
2013/07/04 Javascript
JQuery中form验证出错信息的查看方法
2013/10/08 Javascript
jquery基础教程之deferred对象使用方法
2014/01/22 Javascript
JS执行删除前的判断代码
2014/02/18 Javascript
使用js dom和jquery分别实现简单增删改
2014/09/11 Javascript
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
2016/04/18 Javascript
bootstrap fileinput 插件使用项目总结(经验)
2017/02/22 Javascript
微信小程序 跳转传递数据的实例
2017/07/06 Javascript
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
2017/09/05 Javascript
Vue项目全局配置微信分享思路详解
2018/05/04 Javascript
ES6基础之解构赋值(destructuring assignment)
2019/02/21 Javascript
微信小程序扫描二维码获取信息实例详解
2019/05/07 Javascript
Node如何后台数据库使用增删改查功能
2019/11/21 Javascript
python 生成目录树及显示文件大小的代码
2009/07/23 Python
基于scrapy实现的简单蜘蛛采集程序
2015/04/17 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
2018/03/23 Python
基于Python中numpy数组的合并实例讲解
2018/04/04 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
Python3如何对urllib和urllib2进行重构
2019/11/25 Python
python opencv pytesseract 验证码识别的实现
2020/08/28 Python
python 用opencv实现图像修复和图像金字塔
2020/11/27 Python
详解python中的三种命令行模块(sys.argv,argparse,click)
2020/12/15 Python
详解移动端HTML5音频与视频问题及解决方案
2018/08/22 HTML / CSS
应届中专生自荐书范文
2014/02/13 职场文书
销售内勤岗位职责
2014/04/15 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书
正确的理解和使用Django信号(Signals)
2021/04/14 Python