vue实现点击右键出现自定义操作菜单
admin 阅读: 2024-03-29
后台-插件-广告管理-内容页头部广告(手机) |
一、前言
实现像微信一样的点击右键后出现操作菜单,对选中的数据项进行相应的操作,接下来介绍使用原生vue实现右键菜单的方法。
二、页面代码
<div v-if="isShow" class="warn_box"> <div v-for="(item, index) in warnList" :key="index" :class="{ 'list': true, 'isTop': item.isTop, 'isSelected': activeIndex === index }" @click="itemClick(index, Number(item.code))" @contextmenu.prevent.stop="showMenu($event, index, item.configId)" > { item.name }} --> <div class="all" > <div class="left"> <div class="left_top"> <EllipsisPop :content="item.name" :row-num="1" width="180px">EllipsisPop> div> <div class="left_bottom">{{ item.code }}div> div> <div class="right"> <div class="right_top">{{ filterTime(item.maxCreateTime) }}div> <div v-if="item.untreatedTotal" class="right_bottom" > <el-badge :value="item.untreatedTotal" :max="999" class="badge" > el-badge> div> div> div> div> <div v-if="isShowMenu" class="menu_box" :style="{'left': menuLeft + 'px', 'top': menuTop + 'px'}"> <div class="menu"> <div v-if="!isNowTop" class="menu_item item_text" @click.stop="stick(true)">置顶div> <div v-else class="menu_item item_text" @click.stop="stick(false)">取消置顶div> <el-popover v-model="showDelPop" placement="top" width="160" trigger="click"> <div style="text-align: center; margin: 0"> <p>请确定是否删除?p> <el-button size="small" @click="showDelPop = false">取消el-button> <el-button type="primary" size="small" @click.stop="deleteList">确定el-button> div> <template #reference> <div class="menu-item item_text" @click.stop="()=>{}">删除div> template> el-popover> div> div> div> .menu_box { position: fixed; z-index: 1004; background-color: #fff; // border-radius: 5px; .menu{ width: 100px; text-align: left; // padding: 5px; box-shadow: 0 2px 12px 0 rgba(0,0,0,0.1); .menu_item{ height: 24px; line-height: 22px; // margin-top: 5px; } .item_text{ color: #171A1D; cursor: pointer; padding: 4px 20px; // border-radius: 3px; transition: all .2s ease-in; } .item_text:hover { background-color: #E9EAEC; } } }- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- @contextmenu.prevent.stop 为阻止浏览器的右键点击菜单事件
- isShowMenu: 来控制菜单的显示
三、页面逻辑
- 同时我们要为其出现的地方进行调整 menuTop,menuLeft,在展示 menu 的时候我们将 event 的页面位置属性 e.pageX 和 e.pageX 拿来赋值
- 我们需要在页面创建的时候增加 click 和 mousedonw 的监听,这样就可以在我们点击别的地方的时候将菜单隐藏
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
// 失去焦点时关闭右击菜单
mounted() { //失去焦点时关闭右击菜单 document.addEventListener("click", (e) => { if (!this.$refs.rightMenu.contains(e.target)) this.rightMenuVisible = false; }); }- 1
- 2
- 3
- 4
- 5
- 6
- 7
四、希望能帮到你
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
在线投稿:投稿 站长QQ:1888636
后台-插件-广告管理-内容页尾部广告(手机) |