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组件中节流函数的失效的原因和解决方法
Dec 02 Vue.js
vue 使用class创建和清除水印的示例代码
Dec 25 Vue.js
vue中封装axios并实现api接口的统一管理
Dec 25 Vue.js
Vue实现下拉加载更多
May 09 Vue.js
Vue实现动态查询规则生成组件
May 27 Vue.js
vue项目中的支付功能实现(微信支付和支付宝支付)
Feb 18 Vue.js
Vue.js中v-for指令的用法介绍
Mar 13 Vue.js
VUE之图片Base64编码使用ElementUI组件上传
Apr 09 Vue.js
vue特效之翻牌动画
Apr 20 Vue.js
Vue Mint UI mt-swipe的使用方式
Jun 05 Vue.js
Vue深入理解插槽slot的使用
Aug 05 Vue.js
Vue3实现简易音乐播放器组件
Aug 14 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
经典的星际争霸,满是回忆的BGM
2020/04/09 星际争霸
php的一些小问题
2010/07/03 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
PHP命名空间namespace及use的简单用法分析
2018/08/03 PHP
php和js实现根据子网掩码和ip计算子网功能示例
2019/11/09 PHP
Javascript学习笔记1 数据类型
2010/01/11 Javascript
JQuery做的一个简单的点灯游戏分享
2014/07/16 Javascript
jQuery中:visible选择器用法实例
2014/12/30 Javascript
Jquery日期选择datepicker插件用法实例分析
2015/06/08 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
Vue.js结合bootstrap实现分页控件
2017/03/10 Javascript
JavaScript DOM元素常见操作详解【添加、删除、修改等】
2018/05/09 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
JQuery实现ajax请求的示例和注意事项
2018/12/10 jQuery
浅谈Javascript中的对象和继承
2019/04/19 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
微信小程序防止多次点击跳转(函数节流)
2019/09/19 Javascript
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
Vue实现图片轮播组件思路及实例解析
2020/05/11 Javascript
JS运算符优先级与表达式示例详解
2020/09/04 Javascript
Python实现简单截取中文字符串的方法
2015/06/15 Python
Python两个内置函数 locals 和globals(学习笔记)
2016/08/28 Python
Python实现Linux的find命令实例分享
2017/06/04 Python
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
Zooplus罗马尼亚:宠物食品和配件
2019/11/02 全球购物
金融专业个人求职信范文
2013/11/28 职场文书
单位刻章介绍信范文
2014/01/11 职场文书
敬老院活动总结
2014/04/28 职场文书
星级党支部申报材料
2014/05/31 职场文书
幼师求职信
2014/06/23 职场文书
英语课前三分钟演讲稿(6篇)
2014/09/13 职场文书
学校领导班子对照检查材料
2014/09/24 职场文书
社区植树节活动总结
2015/02/06 职场文书
2016春季田径运动会广播稿
2015/12/21 职场文书
《自己去吧》教学反思
2016/02/16 职场文书