vue中添加原生右键菜单

vue 复制代码
<div
  v-show="state.contextMenu.visible"
  class="context-menu"
  :style="{
	left: `${state.contextMenu.x}px`,
	top: `${state.contextMenu.y}px`
  }"
>

数据结构定义

javascript 复制代码
const state = reactive({
    contextMenu: {
        visible: false,
        x: 0,
        y: 0,
        currentItem: null
    }
});


// 新增右键菜单处理函数
const handleContextMenu = (event, item) => {
    event.preventDefault();
    state.contextMenu = {
        visible: true,
        x: event.clientX,
        y: event.clientY,
        currentItem: item
    };
};

const closeContextMenu = () => {
    state.contextMenu.visible = false;
};


onMounted(async () => {
	document.addEventListener('click', closeContextMenu);    
);

在需要触发的组件中调用

vue 复制代码
 @contextmenu="handleContextMenu($event, item)"

样式定义

css 复制代码
/* 新增右键菜单样式 */
.context-menu {
  position: fixed;
  background: white;
  border: 1px solid #ebeef5;
  border-radius: 4px;
  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
  z-index: 9999;
  min-width: 120px;
}

.menu-item {
  padding: 8px 16px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 8px;
}

.menu-item:hover {
  background-color: #f5f7fa;
  color: var(--el-color-primary);
}
相关推荐
明朝百晓生12 小时前
Deep RL learning[2026/8]
开发语言·javascript·人工智能
用户9385156350712 小时前
ESLint 代码规范完全指南——从 AST 原理到 flat config 逐行解析
javascript·后端·代码规范
kyriewen14 小时前
今年裁了16万技术人——但字节前端岗反而涨了23%
前端·javascript·面试
王林不想说话16 小时前
ES6 到 ES2026 全面进阶指南:新特性、原理、示例与工程落地
前端·javascript·面试
WZzz16 小时前
JavaScript 中 this 的「指向」完整教程
javascript
mONESY16 小时前
浏览器里跑 DeepSeek-R1,这份 worker.js 到底写了什么
javascript
用户69190268133917 小时前
用浏览器 WebGPU跑DPSK大模型(1) - 模型的下载和前端下载进度的显示
javascript·react.js·架构
夏幻灵17 小时前
Vue 2 与 Vue 3 在应用初始化上的设计差异与技术演进
前端·javascript·vue.js
悟空瞎说18 小时前
Three.js 架构实践:用 MVC 模式组织你的 3D 应用
前端·javascript
王林不想说话18 小时前
JavaScript 从入门到进阶:一篇覆盖核心知识、运行机制与工程实践
javascript