From 06e5c03b053248ec0746c2d936561f906ca29a29 Mon Sep 17 00:00:00 2001 From: sakuya <81883387@qq.com> Date: Thu, 22 Jul 2021 23:30:52 +0800 Subject: [PATCH] Update contextmenu.vue --- src/views/vab/contextmenu.vue | 117 ++++++++++++++++++++++++++++------ 1 file changed, 97 insertions(+), 20 deletions(-) diff --git a/src/views/vab/contextmenu.vue b/src/views/vab/contextmenu.vue index 1f7f03d5..e01efe13 100644 --- a/src/views/vab/contextmenu.vue +++ b/src/views/vab/contextmenu.vue @@ -17,6 +17,7 @@ +
contextmenu
@@ -24,16 +25,36 @@ - +
+ +
@@ -68,48 +89,104 @@ }, methods: { + fun(){ + return false; + }, openMenu(e) { - console.log(e); - this.visible = true; - this.left = e.clientX + 1; - this.top = e.clientY + 1; + this.visible = true + this.left = e.clientX + 1 + this.top = e.clientY + 1 + + this.$nextTick(() => { + var ex = e.clientX + 1 + var ey = e.clientY + 1 + var innerWidth = window.innerWidth + var innerHeight = window.innerHeight + var menuHeight = this.$refs.contextmenu.offsetHeight + var menuWidth = this.$refs.contextmenu.offsetWidth + //位置修正公示 + //left = (当前点击X + 菜单宽度 > 可视区域宽度 ? 可视区域宽度 - 菜单宽度 : 当前点击X) + //top = (当前点击Y + 菜单高度 > 可视区域高度 ? 当前点击Y - 菜单高度 : 当前点击Y) + this.left = ex + menuWidth > innerWidth ? innerWidth - menuWidth : ex + this.top = ey + menuHeight > innerHeight ? ey - menuHeight : ey + }) + }, closeMenu() { this.visible = false; + }, + openSubmenu(e){ + var menu = e.target.querySelector('ul') + menu.style.display = 'inline-block' + var rect = menu.getBoundingClientRect() + var menuX = rect.left + var menuY = rect.top + var innerWidth = window.innerWidth + var innerHeight = window.innerHeight + var menuHeight = menu.offsetHeight + var menuWidth = menu.offsetWidth + if(menuX + menuWidth > innerWidth){ + menu.style.left = 'auto' + menu.style.right = '100%' + } + if(menuY + menuHeight > innerHeight){ + menu.style.top = 'auto' + menu.style.bottom = '0' + } + }, + closeSubmenu(e){ + var menu = e.target.querySelector('ul') + menu.removeAttribute("style") + menu.style.display = 'none' } } }