【sgContextMenu_v2】自定义组件:基于elementUI自定义右键菜单、右击菜单升级版,支持无限极子菜单,可以自定义菜单按钮图标样式等,自认为这次的封装很到位,个人强烈推荐直接复制使用。

以下是一个基于Vue和Element UI的自定义右键菜单组件的简化示例:




<template>
  <div id="right-click-menu" v-show="visible" :style="position">
    <el-button
      type="text"
      size="small"
      @click="handleClick(item)"
      v-for="(item, index) in menuItems"
      :key="index">
      {{ item.label }}
    </el-button>
  </div>
</template>
 
<script>
export default {
  name: 'RightClickMenu',
  props: {
    menuItems: {
      type: Array,
      default: () => []
    }
  },
  data() {
    return {
      visible: false,
      position: {
        top: '0px',
        left: '0px'
      }
    };
  },
  methods: {
    handleClick(item) {
      this.$emit('menu-item-click', item);
    },
    showMenu(event, items) {
      this.menuItems = items;
      this.position.left = `${event.clientX}px`;
      this.position.top = `${event.clientY}px`;
      this.visible = true;
    },
    hideMenu() {
      this.visible = false;
    }
  },
  mounted() {
    document.addEventListener('click', this.hideMenu);
  },
  beforeDestroy() {
    document.removeEventListener('click', this.hideMenu);
  }
};
</script>
 
<style scoped>
#right-click-menu {
  position: absolute;
  background-color: #fff;
  border-radius: 4px;
  padding: 5px 0;
  z-index: 9999;
  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
}
</style>

使用方法:

  1. 在父组件中引入RightClickMenu组件。
  2. 在模板中添加RightClickMenu组件,并绑定右键事件来显示菜单。
  3. 传递菜单项数组给RightClickMenu组件,它会渲染每个按钮。
  4. 当用户点击菜单项时,会触发menu-item-click事件,并传递选中的项。



<template>
  <div @contextmenu.prevent="openMenu($event)">
    <!-- 其他内容 -->
    <right-click-menu ref="rightClickMenu" @menu-item-click="handleMenuItemClick" />
  </div>
</template>
 
<script>
import RightClickMenu from './RightClickMenu.vue';
 
export default {
  components: {
    RightClickMenu
  },
  methods: {
    openMenu(event) {
      const menuItems = [
        { label: '操作一', value: 'one' },
        { label: '操作二', value: 'two' }
      ];
      this.$refs.rightClickMenu.showMenu(event, menuItems);
    },
    handleMenuItemClick(item) {
      // 处理菜单项点击事件
    }
  }
};
</script>

在这个示例中,我们创建了一个可复用的右键菜单组件,并展示了如何在父组件中引用它。通过监听\`co

最后修改于:2024年08月27日 18:03

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日